dojo-rails 0.11.0 → 0.14.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (790) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +2 -0
  3. data/.rspec +1 -0
  4. data/CHANGELOG.md +11 -0
  5. data/CONTRIBUTING.md +31 -0
  6. data/Gemfile +3 -0
  7. data/README.md +82 -40
  8. data/Rakefile +6 -0
  9. data/app/helpers/dojo_helper.rb +23 -0
  10. data/dojo-rails.gemspec +12 -6
  11. data/lib/dojo/rails/version.rb +1 -1
  12. data/lib/dojo/version.rb +2 -2
  13. data/spec/dummy_app/Gemfile +38 -0
  14. data/spec/dummy_app/Rakefile +7 -0
  15. data/spec/dummy_app/app/assets/javascripts/application.js +15 -0
  16. data/spec/dummy_app/app/assets/stylesheets/application.css +13 -0
  17. data/spec/dummy_app/app/controllers/application_controller.rb +3 -0
  18. data/spec/dummy_app/app/helpers/application_helper.rb +2 -0
  19. data/spec/dummy_app/app/mailers/.gitkeep +0 -0
  20. data/spec/dummy_app/app/models/.gitkeep +0 -0
  21. data/spec/dummy_app/app/views/layouts/application.html.erb +14 -0
  22. data/spec/dummy_app/config.ru +4 -0
  23. data/spec/dummy_app/config/application.rb +62 -0
  24. data/spec/dummy_app/config/boot.rb +6 -0
  25. data/spec/dummy_app/config/database.yml +25 -0
  26. data/spec/dummy_app/config/environment.rb +5 -0
  27. data/spec/dummy_app/config/environments/development.rb +37 -0
  28. data/spec/dummy_app/config/environments/production.rb +67 -0
  29. data/spec/dummy_app/config/environments/test.rb +37 -0
  30. data/spec/dummy_app/config/initializers/backtrace_silencers.rb +7 -0
  31. data/spec/dummy_app/config/initializers/inflections.rb +15 -0
  32. data/spec/dummy_app/config/initializers/mime_types.rb +5 -0
  33. data/spec/dummy_app/config/initializers/secret_token.rb +7 -0
  34. data/spec/dummy_app/config/initializers/session_store.rb +8 -0
  35. data/spec/dummy_app/config/initializers/wrap_parameters.rb +14 -0
  36. data/spec/dummy_app/config/locales/en.yml +5 -0
  37. data/spec/dummy_app/config/routes.rb +58 -0
  38. data/spec/dummy_app/db/seeds.rb +7 -0
  39. data/spec/dummy_app/lib/assets/.gitkeep +0 -0
  40. data/spec/dummy_app/lib/tasks/.gitkeep +0 -0
  41. data/spec/dummy_app/log/.gitkeep +0 -0
  42. data/spec/dummy_app/public/404.html +26 -0
  43. data/spec/dummy_app/public/422.html +26 -0
  44. data/spec/dummy_app/public/500.html +25 -0
  45. data/spec/dummy_app/public/favicon.ico +0 -0
  46. data/spec/dummy_app/public/index.html +241 -0
  47. data/spec/dummy_app/public/robots.txt +5 -0
  48. data/spec/dummy_app/script/rails +6 -0
  49. data/spec/helpers/dojo_helper_spec.rb +23 -0
  50. data/spec/spec_helper.rb +13 -0
  51. data/vendor/assets/{javascripts/dojo → images}/_firebug/errorIcon.png +0 -0
  52. data/vendor/assets/{javascripts/dojo → images}/_firebug/infoIcon.png +0 -0
  53. data/vendor/assets/{javascripts/dojo → images}/_firebug/tab_lft_norm.png +0 -0
  54. data/vendor/assets/{javascripts/dojo → images}/_firebug/tab_lft_over.png +0 -0
  55. data/vendor/assets/{javascripts/dojo → images}/_firebug/tab_rgt_norm.png +0 -0
  56. data/vendor/assets/images/_firebug/tab_rgt_over.png +0 -0
  57. data/vendor/assets/{javascripts/dojo → images}/_firebug/warningIcon.png +0 -0
  58. data/vendor/assets/images/resources/blank.gif +0 -0
  59. data/vendor/assets/images/resources/images/dndCopy.png +0 -0
  60. data/vendor/assets/images/resources/images/dndMove.png +0 -0
  61. data/vendor/assets/images/resources/images/dndNoCopy.png +0 -0
  62. data/vendor/assets/images/resources/images/dndNoMove.png +0 -0
  63. data/vendor/assets/javascripts/dojo.js +231 -7
  64. data/vendor/assets/javascripts/dojo/AdapterRegistry.js +1 -1
  65. data/vendor/assets/javascripts/dojo/Deferred.js +14 -8
  66. data/vendor/assets/javascripts/dojo/DeferredList.js +1 -1
  67. data/vendor/assets/javascripts/dojo/Evented.js +1 -1
  68. data/vendor/assets/javascripts/dojo/NodeList-data.js +1 -1
  69. data/vendor/assets/javascripts/dojo/NodeList-dom.js +1 -1
  70. data/vendor/assets/javascripts/dojo/NodeList-fx.js +1 -1
  71. data/vendor/assets/javascripts/dojo/NodeList-html.js +1 -1
  72. data/vendor/assets/javascripts/dojo/NodeList-manipulate.js +1 -1
  73. data/vendor/assets/javascripts/dojo/NodeList-traverse.js +1 -1
  74. data/vendor/assets/javascripts/dojo/NodeList.js +1 -1
  75. data/vendor/assets/javascripts/dojo/Stateful.js +2 -2
  76. data/vendor/assets/javascripts/dojo/_base/Color.js +1 -1
  77. data/vendor/assets/javascripts/dojo/_base/Deferred.js +1 -1
  78. data/vendor/assets/javascripts/dojo/_base/NodeList.js +1 -1
  79. data/vendor/assets/javascripts/dojo/_base/array.js +1 -1
  80. data/vendor/assets/javascripts/dojo/_base/browser.js +1 -1
  81. data/vendor/assets/javascripts/dojo/_base/config.js +1 -1
  82. data/vendor/assets/javascripts/dojo/_base/connect.js +1 -1
  83. data/vendor/assets/javascripts/dojo/_base/declare.js +1 -1
  84. data/vendor/assets/javascripts/dojo/_base/event.js +1 -1
  85. data/vendor/assets/javascripts/dojo/_base/fx.js +1 -1
  86. data/vendor/assets/javascripts/dojo/_base/html.js +1 -1
  87. data/vendor/assets/javascripts/dojo/_base/json.js +1 -1
  88. data/vendor/assets/javascripts/dojo/_base/kernel.js +3 -3
  89. data/vendor/assets/javascripts/dojo/_base/lang.js +1 -1
  90. data/vendor/assets/javascripts/dojo/_base/loader.js +1 -1
  91. data/vendor/assets/javascripts/dojo/_base/query.js +1 -1
  92. data/vendor/assets/javascripts/dojo/_base/sniff.js +1 -1
  93. data/vendor/assets/javascripts/dojo/_base/unload.js +1 -1
  94. data/vendor/assets/javascripts/dojo/_base/url.js +1 -1
  95. data/vendor/assets/javascripts/dojo/_base/window.js +1 -1
  96. data/vendor/assets/javascripts/dojo/_base/xhr.js +9 -1
  97. data/vendor/assets/javascripts/dojo/_firebug/firebug.js +1 -1
  98. data/vendor/assets/javascripts/dojo/aspect.js +43 -41
  99. data/vendor/assets/javascripts/dojo/back.js +1 -1
  100. data/vendor/assets/javascripts/dojo/behavior.js +1 -1
  101. data/vendor/assets/javascripts/dojo/cache.js +1 -1
  102. data/vendor/assets/javascripts/dojo/cldr/monetary.js +1 -1
  103. data/vendor/assets/javascripts/dojo/cldr/nls/ar/buddhist.js +2 -2
  104. data/vendor/assets/javascripts/dojo/cldr/nls/ar/currency.js +2 -2
  105. data/vendor/assets/javascripts/dojo/cldr/nls/ar/gregorian.js +2 -2
  106. data/vendor/assets/javascripts/dojo/cldr/nls/ar/hebrew.js +2 -2
  107. data/vendor/assets/javascripts/dojo/cldr/nls/ar/islamic.js +2 -2
  108. data/vendor/assets/javascripts/dojo/cldr/nls/ar/number.js +2 -2
  109. data/vendor/assets/javascripts/dojo/cldr/nls/buddhist.js +2 -2
  110. data/vendor/assets/javascripts/dojo/cldr/nls/ca/buddhist.js +8 -0
  111. data/vendor/assets/javascripts/dojo/cldr/nls/ca/currency.js +2 -2
  112. data/vendor/assets/javascripts/dojo/cldr/nls/ca/gregorian.js +2 -2
  113. data/vendor/assets/javascripts/dojo/cldr/nls/ca/number.js +2 -2
  114. data/vendor/assets/javascripts/dojo/cldr/nls/cs/buddhist.js +2 -2
  115. data/vendor/assets/javascripts/dojo/cldr/nls/cs/currency.js +2 -2
  116. data/vendor/assets/javascripts/dojo/cldr/nls/cs/gregorian.js +2 -2
  117. data/vendor/assets/javascripts/dojo/cldr/nls/cs/islamic.js +2 -2
  118. data/vendor/assets/javascripts/dojo/cldr/nls/cs/number.js +2 -2
  119. data/vendor/assets/javascripts/dojo/cldr/nls/currency.js +2 -2
  120. data/vendor/assets/javascripts/dojo/cldr/nls/da/buddhist.js +2 -2
  121. data/vendor/assets/javascripts/dojo/cldr/nls/da/currency.js +2 -2
  122. data/vendor/assets/javascripts/dojo/cldr/nls/da/gregorian.js +2 -2
  123. data/vendor/assets/javascripts/dojo/cldr/nls/da/islamic.js +2 -2
  124. data/vendor/assets/javascripts/dojo/cldr/nls/da/number.js +2 -2
  125. data/vendor/assets/javascripts/dojo/cldr/nls/de/buddhist.js +2 -2
  126. data/vendor/assets/javascripts/dojo/cldr/nls/de/currency.js +2 -2
  127. data/vendor/assets/javascripts/dojo/cldr/nls/de/gregorian.js +2 -2
  128. data/vendor/assets/javascripts/dojo/cldr/nls/de/islamic.js +2 -2
  129. data/vendor/assets/javascripts/dojo/cldr/nls/de/number.js +2 -2
  130. data/vendor/assets/javascripts/dojo/cldr/nls/el/buddhist.js +2 -2
  131. data/vendor/assets/javascripts/dojo/cldr/nls/el/currency.js +2 -2
  132. data/vendor/assets/javascripts/dojo/cldr/nls/el/gregorian.js +2 -2
  133. data/vendor/assets/javascripts/dojo/cldr/nls/el/hebrew.js +2 -2
  134. data/vendor/assets/javascripts/dojo/cldr/nls/el/number.js +2 -2
  135. data/vendor/assets/javascripts/dojo/cldr/nls/en-au/currency.js +1 -1
  136. data/vendor/assets/javascripts/dojo/cldr/nls/en-au/gregorian.js +2 -2
  137. data/vendor/assets/javascripts/dojo/cldr/nls/en-au/number.js +1 -1
  138. data/vendor/assets/javascripts/dojo/cldr/nls/en-ca/currency.js +1 -1
  139. data/vendor/assets/javascripts/dojo/cldr/nls/en-ca/gregorian.js +2 -2
  140. data/vendor/assets/javascripts/dojo/cldr/nls/en-gb/buddhist.js +2 -2
  141. data/vendor/assets/javascripts/dojo/cldr/nls/en-gb/currency.js +8 -0
  142. data/vendor/assets/javascripts/dojo/cldr/nls/en-gb/gregorian.js +2 -2
  143. data/vendor/assets/javascripts/dojo/cldr/nls/en-gb/islamic.js +2 -2
  144. data/vendor/assets/javascripts/dojo/cldr/nls/en-gb/number.js +2 -2
  145. data/vendor/assets/javascripts/dojo/cldr/nls/en/buddhist.js +2 -2
  146. data/vendor/assets/javascripts/dojo/cldr/nls/en/currency.js +2 -2
  147. data/vendor/assets/javascripts/dojo/cldr/nls/en/gregorian.js +2 -2
  148. data/vendor/assets/javascripts/dojo/cldr/nls/en/islamic.js +2 -2
  149. data/vendor/assets/javascripts/dojo/cldr/nls/en/number.js +2 -2
  150. data/vendor/assets/javascripts/dojo/cldr/nls/es/buddhist.js +2 -2
  151. data/vendor/assets/javascripts/dojo/cldr/nls/es/currency.js +2 -2
  152. data/vendor/assets/javascripts/dojo/cldr/nls/es/gregorian.js +2 -2
  153. data/vendor/assets/javascripts/dojo/cldr/nls/es/islamic.js +2 -2
  154. data/vendor/assets/javascripts/dojo/cldr/nls/es/number.js +2 -2
  155. data/vendor/assets/javascripts/dojo/cldr/nls/fi/buddhist.js +2 -2
  156. data/vendor/assets/javascripts/dojo/cldr/nls/fi/currency.js +2 -2
  157. data/vendor/assets/javascripts/dojo/cldr/nls/fi/gregorian.js +2 -2
  158. data/vendor/assets/javascripts/dojo/cldr/nls/fi/hebrew.js +2 -2
  159. data/vendor/assets/javascripts/dojo/cldr/nls/fi/islamic.js +2 -2
  160. data/vendor/assets/javascripts/dojo/cldr/nls/fi/number.js +2 -2
  161. data/vendor/assets/javascripts/dojo/cldr/nls/fr-ch/gregorian.js +2 -2
  162. data/vendor/assets/javascripts/dojo/cldr/nls/fr-ch/number.js +2 -2
  163. data/vendor/assets/javascripts/dojo/cldr/nls/fr/buddhist.js +2 -2
  164. data/vendor/assets/javascripts/dojo/cldr/nls/fr/currency.js +2 -2
  165. data/vendor/assets/javascripts/dojo/cldr/nls/fr/gregorian.js +2 -2
  166. data/vendor/assets/javascripts/dojo/cldr/nls/fr/hebrew.js +2 -2
  167. data/vendor/assets/javascripts/dojo/cldr/nls/fr/islamic.js +2 -2
  168. data/vendor/assets/javascripts/dojo/cldr/nls/fr/number.js +2 -2
  169. data/vendor/assets/javascripts/dojo/cldr/nls/gregorian.js +2 -2
  170. data/vendor/assets/javascripts/dojo/cldr/nls/he/currency.js +2 -2
  171. data/vendor/assets/javascripts/dojo/cldr/nls/he/gregorian.js +2 -2
  172. data/vendor/assets/javascripts/dojo/cldr/nls/he/hebrew.js +2 -2
  173. data/vendor/assets/javascripts/dojo/cldr/nls/he/islamic.js +2 -2
  174. data/vendor/assets/javascripts/dojo/cldr/nls/he/number.js +2 -2
  175. data/vendor/assets/javascripts/dojo/cldr/nls/hebrew.js +2 -2
  176. data/vendor/assets/javascripts/dojo/cldr/nls/hu/buddhist.js +2 -2
  177. data/vendor/assets/javascripts/dojo/cldr/nls/hu/currency.js +2 -2
  178. data/vendor/assets/javascripts/dojo/cldr/nls/hu/gregorian.js +2 -2
  179. data/vendor/assets/javascripts/dojo/cldr/nls/hu/hebrew.js +2 -2
  180. data/vendor/assets/javascripts/dojo/cldr/nls/hu/islamic.js +2 -2
  181. data/vendor/assets/javascripts/dojo/cldr/nls/hu/number.js +2 -2
  182. data/vendor/assets/javascripts/dojo/cldr/nls/islamic.js +2 -2
  183. data/vendor/assets/javascripts/dojo/cldr/nls/it/buddhist.js +2 -2
  184. data/vendor/assets/javascripts/dojo/cldr/nls/it/currency.js +2 -2
  185. data/vendor/assets/javascripts/dojo/cldr/nls/it/gregorian.js +2 -2
  186. data/vendor/assets/javascripts/dojo/cldr/nls/it/islamic.js +2 -2
  187. data/vendor/assets/javascripts/dojo/cldr/nls/it/number.js +2 -2
  188. data/vendor/assets/javascripts/dojo/cldr/nls/ja/buddhist.js +2 -2
  189. data/vendor/assets/javascripts/dojo/cldr/nls/ja/currency.js +2 -2
  190. data/vendor/assets/javascripts/dojo/cldr/nls/ja/gregorian.js +2 -2
  191. data/vendor/assets/javascripts/dojo/cldr/nls/ja/hebrew.js +2 -2
  192. data/vendor/assets/javascripts/dojo/cldr/nls/ja/islamic.js +2 -2
  193. data/vendor/assets/javascripts/dojo/cldr/nls/ja/number.js +2 -2
  194. data/vendor/assets/javascripts/dojo/cldr/nls/ko/buddhist.js +2 -2
  195. data/vendor/assets/javascripts/dojo/cldr/nls/ko/currency.js +2 -2
  196. data/vendor/assets/javascripts/dojo/cldr/nls/ko/gregorian.js +2 -2
  197. data/vendor/assets/javascripts/dojo/cldr/nls/ko/number.js +2 -2
  198. data/vendor/assets/javascripts/dojo/cldr/nls/nb/buddhist.js +2 -2
  199. data/vendor/assets/javascripts/dojo/cldr/nls/nb/currency.js +2 -2
  200. data/vendor/assets/javascripts/dojo/cldr/nls/nb/gregorian.js +2 -2
  201. data/vendor/assets/javascripts/dojo/cldr/nls/nb/islamic.js +2 -2
  202. data/vendor/assets/javascripts/dojo/cldr/nls/nb/number.js +2 -2
  203. data/vendor/assets/javascripts/dojo/cldr/nls/nl/buddhist.js +2 -2
  204. data/vendor/assets/javascripts/dojo/cldr/nls/nl/currency.js +2 -2
  205. data/vendor/assets/javascripts/dojo/cldr/nls/nl/gregorian.js +2 -2
  206. data/vendor/assets/javascripts/dojo/cldr/nls/nl/hebrew.js +2 -2
  207. data/vendor/assets/javascripts/dojo/cldr/nls/nl/islamic.js +2 -2
  208. data/vendor/assets/javascripts/dojo/cldr/nls/nl/number.js +2 -2
  209. data/vendor/assets/javascripts/dojo/cldr/nls/number.js +2 -2
  210. data/vendor/assets/javascripts/dojo/cldr/nls/pl/buddhist.js +2 -2
  211. data/vendor/assets/javascripts/dojo/cldr/nls/pl/currency.js +2 -2
  212. data/vendor/assets/javascripts/dojo/cldr/nls/pl/gregorian.js +2 -2
  213. data/vendor/assets/javascripts/dojo/cldr/nls/pl/hebrew.js +2 -2
  214. data/vendor/assets/javascripts/dojo/cldr/nls/pl/islamic.js +2 -2
  215. data/vendor/assets/javascripts/dojo/cldr/nls/pl/number.js +2 -2
  216. data/vendor/assets/javascripts/dojo/cldr/nls/pt-pt/buddhist.js +2 -2
  217. data/vendor/assets/javascripts/dojo/cldr/nls/pt-pt/currency.js +1 -1
  218. data/vendor/assets/javascripts/dojo/cldr/nls/pt-pt/gregorian.js +2 -2
  219. data/vendor/assets/javascripts/dojo/cldr/nls/pt-pt/islamic.js +2 -2
  220. data/vendor/assets/javascripts/dojo/cldr/nls/pt-pt/number.js +2 -2
  221. data/vendor/assets/javascripts/dojo/cldr/nls/pt/buddhist.js +2 -2
  222. data/vendor/assets/javascripts/dojo/cldr/nls/pt/currency.js +2 -2
  223. data/vendor/assets/javascripts/dojo/cldr/nls/pt/gregorian.js +2 -2
  224. data/vendor/assets/javascripts/dojo/cldr/nls/pt/hebrew.js +2 -2
  225. data/vendor/assets/javascripts/dojo/cldr/nls/pt/islamic.js +2 -2
  226. data/vendor/assets/javascripts/dojo/cldr/nls/pt/number.js +2 -2
  227. data/vendor/assets/javascripts/dojo/cldr/nls/ro/buddhist.js +2 -2
  228. data/vendor/assets/javascripts/dojo/cldr/nls/ro/currency.js +2 -2
  229. data/vendor/assets/javascripts/dojo/cldr/nls/ro/gregorian.js +2 -2
  230. data/vendor/assets/javascripts/dojo/cldr/nls/ro/hebrew.js +2 -2
  231. data/vendor/assets/javascripts/dojo/cldr/nls/ro/islamic.js +2 -2
  232. data/vendor/assets/javascripts/dojo/cldr/nls/ro/number.js +2 -2
  233. data/vendor/assets/javascripts/dojo/cldr/nls/ru/buddhist.js +2 -2
  234. data/vendor/assets/javascripts/dojo/cldr/nls/ru/currency.js +2 -2
  235. data/vendor/assets/javascripts/dojo/cldr/nls/ru/gregorian.js +2 -2
  236. data/vendor/assets/javascripts/dojo/cldr/nls/ru/hebrew.js +2 -2
  237. data/vendor/assets/javascripts/dojo/cldr/nls/ru/islamic.js +2 -2
  238. data/vendor/assets/javascripts/dojo/cldr/nls/ru/number.js +2 -2
  239. data/vendor/assets/javascripts/dojo/cldr/nls/sk/currency.js +2 -2
  240. data/vendor/assets/javascripts/dojo/cldr/nls/sk/gregorian.js +2 -2
  241. data/vendor/assets/javascripts/dojo/cldr/nls/sk/number.js +2 -2
  242. data/vendor/assets/javascripts/dojo/cldr/nls/sl/currency.js +2 -2
  243. data/vendor/assets/javascripts/dojo/cldr/nls/sl/gregorian.js +2 -2
  244. data/vendor/assets/javascripts/dojo/cldr/nls/sl/number.js +2 -2
  245. data/vendor/assets/javascripts/dojo/cldr/nls/sv/buddhist.js +2 -2
  246. data/vendor/assets/javascripts/dojo/cldr/nls/sv/currency.js +2 -2
  247. data/vendor/assets/javascripts/dojo/cldr/nls/sv/gregorian.js +2 -2
  248. data/vendor/assets/javascripts/dojo/cldr/nls/sv/hebrew.js +2 -2
  249. data/vendor/assets/javascripts/dojo/cldr/nls/sv/islamic.js +2 -2
  250. data/vendor/assets/javascripts/dojo/cldr/nls/sv/number.js +2 -2
  251. data/vendor/assets/javascripts/dojo/cldr/nls/th/buddhist.js +2 -2
  252. data/vendor/assets/javascripts/dojo/cldr/nls/th/currency.js +2 -2
  253. data/vendor/assets/javascripts/dojo/cldr/nls/th/gregorian.js +2 -2
  254. data/vendor/assets/javascripts/dojo/cldr/nls/th/hebrew.js +2 -2
  255. data/vendor/assets/javascripts/dojo/cldr/nls/th/islamic.js +2 -2
  256. data/vendor/assets/javascripts/dojo/cldr/nls/th/number.js +2 -2
  257. data/vendor/assets/javascripts/dojo/cldr/nls/tr/buddhist.js +2 -2
  258. data/vendor/assets/javascripts/dojo/cldr/nls/tr/currency.js +2 -2
  259. data/vendor/assets/javascripts/dojo/cldr/nls/tr/gregorian.js +2 -2
  260. data/vendor/assets/javascripts/dojo/cldr/nls/tr/hebrew.js +2 -2
  261. data/vendor/assets/javascripts/dojo/cldr/nls/tr/islamic.js +2 -2
  262. data/vendor/assets/javascripts/dojo/cldr/nls/tr/number.js +2 -2
  263. data/vendor/assets/javascripts/dojo/cldr/nls/zh-hant/buddhist.js +2 -2
  264. data/vendor/assets/javascripts/dojo/cldr/nls/zh-hant/currency.js +2 -2
  265. data/vendor/assets/javascripts/dojo/cldr/nls/zh-hant/gregorian.js +2 -2
  266. data/vendor/assets/javascripts/dojo/cldr/nls/zh-hant/hebrew.js +2 -2
  267. data/vendor/assets/javascripts/dojo/cldr/nls/zh-hant/islamic.js +2 -2
  268. data/vendor/assets/javascripts/dojo/cldr/nls/zh-hant/number.js +2 -2
  269. data/vendor/assets/javascripts/dojo/cldr/nls/zh-hk/currency.js +2 -2
  270. data/vendor/assets/javascripts/dojo/cldr/nls/zh-hk/gregorian.js +2 -2
  271. data/vendor/assets/javascripts/dojo/cldr/nls/zh-hk/number.js +2 -2
  272. data/vendor/assets/javascripts/dojo/cldr/nls/zh-tw/currency.js +2 -2
  273. data/vendor/assets/javascripts/dojo/cldr/nls/zh-tw/gregorian.js +2 -2
  274. data/vendor/assets/javascripts/dojo/cldr/nls/zh-tw/number.js +2 -2
  275. data/vendor/assets/javascripts/dojo/cldr/nls/zh/buddhist.js +2 -2
  276. data/vendor/assets/javascripts/dojo/cldr/nls/zh/currency.js +2 -2
  277. data/vendor/assets/javascripts/dojo/cldr/nls/zh/gregorian.js +2 -2
  278. data/vendor/assets/javascripts/dojo/cldr/nls/zh/hebrew.js +2 -2
  279. data/vendor/assets/javascripts/dojo/cldr/nls/zh/islamic.js +2 -2
  280. data/vendor/assets/javascripts/dojo/cldr/nls/zh/number.js +2 -2
  281. data/vendor/assets/javascripts/dojo/cldr/supplemental.js +1 -1
  282. data/vendor/assets/javascripts/dojo/colors.js +1 -1
  283. data/vendor/assets/javascripts/dojo/cookie.js +1 -1
  284. data/vendor/assets/javascripts/dojo/currency.js +1 -1
  285. data/vendor/assets/javascripts/dojo/data/ItemFileReadStore.js +1 -1
  286. data/vendor/assets/javascripts/dojo/data/ItemFileWriteStore.js +1 -1
  287. data/vendor/assets/javascripts/dojo/data/ObjectStore.js +1 -1
  288. data/vendor/assets/javascripts/dojo/data/api/Identity.js +1 -1
  289. data/vendor/assets/javascripts/dojo/data/api/Item.js +1 -1
  290. data/vendor/assets/javascripts/dojo/data/api/Notification.js +1 -1
  291. data/vendor/assets/javascripts/dojo/data/api/Read.js +1 -1
  292. data/vendor/assets/javascripts/dojo/data/api/Request.js +1 -1
  293. data/vendor/assets/javascripts/dojo/data/api/Write.js +1 -1
  294. data/vendor/assets/javascripts/dojo/data/util/filter.js +1 -1
  295. data/vendor/assets/javascripts/dojo/data/util/simpleFetch.js +1 -1
  296. data/vendor/assets/javascripts/dojo/data/util/sorter.js +1 -1
  297. data/vendor/assets/javascripts/dojo/date.js +1 -1
  298. data/vendor/assets/javascripts/dojo/date/locale.js +2 -2
  299. data/vendor/assets/javascripts/dojo/date/stamp.js +1 -1
  300. data/vendor/assets/javascripts/dojo/dnd/AutoSource.js +1 -1
  301. data/vendor/assets/javascripts/dojo/dnd/Avatar.js +1 -1
  302. data/vendor/assets/javascripts/dojo/dnd/Container.js +1 -1
  303. data/vendor/assets/javascripts/dojo/dnd/Manager.js +1 -1
  304. data/vendor/assets/javascripts/dojo/dnd/Moveable.js +1 -1
  305. data/vendor/assets/javascripts/dojo/dnd/Mover.js +1 -1
  306. data/vendor/assets/javascripts/dojo/dnd/Selector.js +1 -1
  307. data/vendor/assets/javascripts/dojo/dnd/Source.js +1 -1
  308. data/vendor/assets/javascripts/dojo/dnd/Target.js +1 -1
  309. data/vendor/assets/javascripts/dojo/dnd/TimedMoveable.js +1 -1
  310. data/vendor/assets/javascripts/dojo/dnd/autoscroll.js +1 -1
  311. data/vendor/assets/javascripts/dojo/dnd/common.js +2 -3
  312. data/vendor/assets/javascripts/dojo/dnd/move.js +2 -2
  313. data/vendor/assets/javascripts/dojo/dojo.js +2 -2
  314. data/vendor/assets/javascripts/dojo/dom-attr.js +1 -1
  315. data/vendor/assets/javascripts/dojo/dom-class.js +1 -1
  316. data/vendor/assets/javascripts/dojo/dom-construct.js +71 -66
  317. data/vendor/assets/javascripts/dojo/dom-form.js +1 -1
  318. data/vendor/assets/javascripts/dojo/dom-geometry.js +2 -2
  319. data/vendor/assets/javascripts/dojo/dom-prop.js +1 -1
  320. data/vendor/assets/javascripts/dojo/dom-style.js +3 -3
  321. data/vendor/assets/javascripts/dojo/dom.js +44 -30
  322. data/vendor/assets/javascripts/dojo/domReady.js +1 -1
  323. data/vendor/assets/javascripts/dojo/errors/CancelError.js +1 -1
  324. data/vendor/assets/javascripts/dojo/errors/RequestError.js +1 -1
  325. data/vendor/assets/javascripts/dojo/errors/RequestTimeoutError.js +1 -1
  326. data/vendor/assets/javascripts/dojo/errors/create.js +1 -1
  327. data/vendor/assets/javascripts/dojo/fx.js +1 -1
  328. data/vendor/assets/javascripts/dojo/fx/Toggler.js +1 -1
  329. data/vendor/assets/javascripts/dojo/fx/easing.js +1 -1
  330. data/vendor/assets/javascripts/dojo/gears.js +1 -1
  331. data/vendor/assets/javascripts/dojo/has.js +2 -2
  332. data/vendor/assets/javascripts/dojo/hash.js +1 -1
  333. data/vendor/assets/javascripts/dojo/hccss.js +16 -12
  334. data/vendor/assets/javascripts/dojo/html.js +4 -2
  335. data/vendor/assets/javascripts/dojo/i18n.js +1 -1
  336. data/vendor/assets/javascripts/dojo/io-query.js +1 -1
  337. data/vendor/assets/javascripts/dojo/io/iframe.js +3 -3
  338. data/vendor/assets/javascripts/dojo/io/script.js +81 -58
  339. data/vendor/assets/javascripts/dojo/jaxer.js +1 -1
  340. data/vendor/assets/javascripts/dojo/json.js +1 -1
  341. data/vendor/assets/javascripts/dojo/keys.js +1 -1
  342. data/vendor/assets/javascripts/dojo/loadInit.js +1 -1
  343. data/vendor/assets/javascripts/dojo/main.js +1 -1
  344. data/vendor/assets/javascripts/dojo/mouse.js +2 -2
  345. data/vendor/assets/javascripts/dojo/nls/ar/colors.js +1 -1
  346. data/vendor/assets/javascripts/dojo/nls/az/colors.js +1 -1
  347. data/vendor/assets/javascripts/dojo/nls/ca/colors.js +1 -1
  348. data/vendor/assets/javascripts/dojo/nls/colors.js +1 -1
  349. data/vendor/assets/javascripts/dojo/nls/cs/colors.js +1 -1
  350. data/vendor/assets/javascripts/dojo/nls/da/colors.js +1 -1
  351. data/vendor/assets/javascripts/dojo/nls/de/colors.js +1 -1
  352. data/vendor/assets/javascripts/dojo/nls/el/colors.js +1 -1
  353. data/vendor/assets/javascripts/dojo/nls/es/colors.js +1 -1
  354. data/vendor/assets/javascripts/dojo/nls/fi/colors.js +1 -1
  355. data/vendor/assets/javascripts/dojo/nls/fr/colors.js +1 -1
  356. data/vendor/assets/javascripts/dojo/nls/he/colors.js +2 -2
  357. data/vendor/assets/javascripts/dojo/nls/hr/colors.js +1 -1
  358. data/vendor/assets/javascripts/dojo/nls/hu/colors.js +1 -1
  359. data/vendor/assets/javascripts/dojo/nls/it/colors.js +1 -1
  360. data/vendor/assets/javascripts/dojo/nls/ja/colors.js +1 -1
  361. data/vendor/assets/javascripts/dojo/nls/kk/colors.js +1 -1
  362. data/vendor/assets/javascripts/dojo/nls/ko/colors.js +1 -1
  363. data/vendor/assets/javascripts/dojo/nls/nb/colors.js +1 -1
  364. data/vendor/assets/javascripts/dojo/nls/nl/colors.js +1 -1
  365. data/vendor/assets/javascripts/dojo/nls/pl/colors.js +1 -1
  366. data/vendor/assets/javascripts/dojo/nls/pt-pt/colors.js +1 -1
  367. data/vendor/assets/javascripts/dojo/nls/pt/colors.js +1 -1
  368. data/vendor/assets/javascripts/dojo/nls/ro/colors.js +1 -1
  369. data/vendor/assets/javascripts/dojo/nls/ru/colors.js +1 -1
  370. data/vendor/assets/javascripts/dojo/nls/sk/colors.js +1 -1
  371. data/vendor/assets/javascripts/dojo/nls/sl/colors.js +1 -1
  372. data/vendor/assets/javascripts/dojo/nls/sv/colors.js +1 -1
  373. data/vendor/assets/javascripts/dojo/nls/th/colors.js +2 -2
  374. data/vendor/assets/javascripts/dojo/nls/tr/colors.js +1 -1
  375. data/vendor/assets/javascripts/dojo/nls/zh-tw/colors.js +1 -1
  376. data/vendor/assets/javascripts/dojo/nls/zh/colors.js +1 -1
  377. data/vendor/assets/javascripts/dojo/node.js +18 -3
  378. data/vendor/assets/javascripts/dojo/number.js +7 -2
  379. data/vendor/assets/javascripts/dojo/on.js +12 -8
  380. data/vendor/assets/javascripts/dojo/package.json +1 -1
  381. data/vendor/assets/javascripts/dojo/parser.js +264 -264
  382. data/vendor/assets/javascripts/dojo/promise/Promise.js +1 -1
  383. data/vendor/assets/javascripts/dojo/promise/all.js +1 -1
  384. data/vendor/assets/javascripts/dojo/promise/first.js +1 -1
  385. data/vendor/assets/javascripts/dojo/promise/instrumentation.js +3 -1
  386. data/vendor/assets/javascripts/dojo/promise/tracer.js +1 -1
  387. data/vendor/assets/javascripts/dojo/query.js +1 -1
  388. data/vendor/assets/javascripts/dojo/ready.js +3 -3
  389. data/vendor/assets/javascripts/dojo/regexp.js +1 -1
  390. data/vendor/assets/javascripts/dojo/request.js +1 -1
  391. data/vendor/assets/javascripts/dojo/request/default.js +1 -1
  392. data/vendor/assets/javascripts/dojo/request/handlers.js +30 -24
  393. data/vendor/assets/javascripts/dojo/request/iframe.js +8 -7
  394. data/vendor/assets/javascripts/dojo/request/node.js +6 -1
  395. data/vendor/assets/javascripts/dojo/request/notify.js +17 -17
  396. data/vendor/assets/javascripts/dojo/request/registry.js +1 -1
  397. data/vendor/assets/javascripts/dojo/request/script.js +47 -44
  398. data/vendor/assets/javascripts/dojo/request/util.js +79 -71
  399. data/vendor/assets/javascripts/dojo/request/watch.js +2 -2
  400. data/vendor/assets/javascripts/dojo/request/xhr.js +36 -34
  401. data/vendor/assets/javascripts/dojo/require.js +1 -1
  402. data/vendor/assets/javascripts/dojo/router.js +1 -1
  403. data/vendor/assets/javascripts/dojo/router/RouterBase.js +1 -1
  404. data/vendor/assets/javascripts/dojo/rpc/JsonService.js +1 -1
  405. data/vendor/assets/javascripts/dojo/rpc/JsonpService.js +1 -1
  406. data/vendor/assets/javascripts/dojo/rpc/RpcService.js +1 -1
  407. data/vendor/assets/javascripts/dojo/selector/_loader.js +1 -1
  408. data/vendor/assets/javascripts/dojo/selector/acme.js +2 -2
  409. data/vendor/assets/javascripts/dojo/selector/lite.js +1 -1
  410. data/vendor/assets/javascripts/dojo/sniff.js +1 -1
  411. data/vendor/assets/javascripts/dojo/store/Cache.js +2 -1
  412. data/vendor/assets/javascripts/dojo/store/DataStore.js +1 -1
  413. data/vendor/assets/javascripts/dojo/store/JsonRest.js +1 -1
  414. data/vendor/assets/javascripts/dojo/store/Memory.js +1 -1
  415. data/vendor/assets/javascripts/dojo/store/Observable.js +2 -2
  416. data/vendor/assets/javascripts/dojo/store/api/Store.js +1 -1
  417. data/vendor/assets/javascripts/dojo/store/util/QueryResults.js +1 -1
  418. data/vendor/assets/javascripts/dojo/store/util/SimpleQueryEngine.js +1 -1
  419. data/vendor/assets/javascripts/dojo/string.js +1 -1
  420. data/vendor/assets/javascripts/dojo/text.js +1 -1
  421. data/vendor/assets/javascripts/dojo/topic.js +1 -1
  422. data/vendor/assets/javascripts/dojo/touch.js +55 -30
  423. data/vendor/assets/javascripts/dojo/uacss.js +10 -2
  424. data/vendor/assets/javascripts/dojo/when.js +3 -3
  425. data/vendor/assets/javascripts/dojo/window.js +98 -77
  426. data/vendor/assets/stylesheets/_firebug/firebug.css +208 -0
  427. data/vendor/assets/stylesheets/resources/dnd.css +14 -0
  428. data/vendor/assets/stylesheets/resources/dojo.css +98 -0
  429. metadata +204 -396
  430. data/LICENSE +0 -19
  431. data/TODO.md +0 -18
  432. data/vendor/assets/javascripts/dojo/AdapterRegistry.js.uncompressed.js +0 -106
  433. data/vendor/assets/javascripts/dojo/Deferred.js.uncompressed.js +0 -314
  434. data/vendor/assets/javascripts/dojo/DeferredList.js.uncompressed.js +0 -84
  435. data/vendor/assets/javascripts/dojo/Evented.js.uncompressed.js +0 -35
  436. data/vendor/assets/javascripts/dojo/LICENSE +0 -195
  437. data/vendor/assets/javascripts/dojo/NodeList-data.js.uncompressed.js +0 -192
  438. data/vendor/assets/javascripts/dojo/NodeList-dom.js.uncompressed.js +0 -509
  439. data/vendor/assets/javascripts/dojo/NodeList-fx.js.uncompressed.js +0 -221
  440. data/vendor/assets/javascripts/dojo/NodeList-html.js.uncompressed.js +0 -53
  441. data/vendor/assets/javascripts/dojo/NodeList-manipulate.js.uncompressed.js +0 -724
  442. data/vendor/assets/javascripts/dojo/NodeList-traverse.js.uncompressed.js +0 -503
  443. data/vendor/assets/javascripts/dojo/NodeList.js.uncompressed.js +0 -6
  444. data/vendor/assets/javascripts/dojo/Stateful.js.uncompressed.js +0 -213
  445. data/vendor/assets/javascripts/dojo/_base/Color.js.uncompressed.js +0 -214
  446. data/vendor/assets/javascripts/dojo/_base/Deferred.js.uncompressed.js +0 -349
  447. data/vendor/assets/javascripts/dojo/_base/NodeList.js.uncompressed.js +0 -110
  448. data/vendor/assets/javascripts/dojo/_base/array.js.uncompressed.js +0 -343
  449. data/vendor/assets/javascripts/dojo/_base/browser.js.uncompressed.js +0 -28
  450. data/vendor/assets/javascripts/dojo/_base/config.js.uncompressed.js +0 -187
  451. data/vendor/assets/javascripts/dojo/_base/connect.js.uncompressed.js +0 -374
  452. data/vendor/assets/javascripts/dojo/_base/declare.js.uncompressed.js +0 -1045
  453. data/vendor/assets/javascripts/dojo/_base/event.js.uncompressed.js +0 -59
  454. data/vendor/assets/javascripts/dojo/_base/fx.js.uncompressed.js +0 -670
  455. data/vendor/assets/javascripts/dojo/_base/html.js.uncompressed.js +0 -392
  456. data/vendor/assets/javascripts/dojo/_base/json.js.uncompressed.js +0 -91
  457. data/vendor/assets/javascripts/dojo/_base/kernel.js.uncompressed.js +0 -299
  458. data/vendor/assets/javascripts/dojo/_base/lang.js.uncompressed.js +0 -605
  459. data/vendor/assets/javascripts/dojo/_base/loader.js.uncompressed.js +0 -776
  460. data/vendor/assets/javascripts/dojo/_base/query.js.uncompressed.js +0 -13
  461. data/vendor/assets/javascripts/dojo/_base/sniff.js.uncompressed.js +0 -96
  462. data/vendor/assets/javascripts/dojo/_base/unload.js.uncompressed.js +0 -82
  463. data/vendor/assets/javascripts/dojo/_base/url.js.uncompressed.js +0 -109
  464. data/vendor/assets/javascripts/dojo/_base/window.js.uncompressed.js +0 -134
  465. data/vendor/assets/javascripts/dojo/_base/xhr.js.uncompressed.js +0 -705
  466. data/vendor/assets/javascripts/dojo/_firebug/firebug.js.uncompressed.js +0 -1191
  467. data/vendor/assets/javascripts/dojo/aspect.js.uncompressed.js +0 -219
  468. data/vendor/assets/javascripts/dojo/back.js.uncompressed.js +0 -397
  469. data/vendor/assets/javascripts/dojo/behavior.js.uncompressed.js +0 -249
  470. data/vendor/assets/javascripts/dojo/cache.js.uncompressed.js +0 -7
  471. data/vendor/assets/javascripts/dojo/cldr/monetary.js.uncompressed.js +0 -40
  472. data/vendor/assets/javascripts/dojo/cldr/nls/ar/buddhist.js.uncompressed.js +0 -130
  473. data/vendor/assets/javascripts/dojo/cldr/nls/ar/currency.js.uncompressed.js +0 -16
  474. data/vendor/assets/javascripts/dojo/cldr/nls/ar/gregorian.js.uncompressed.js +0 -256
  475. data/vendor/assets/javascripts/dojo/cldr/nls/ar/hebrew.js.uncompressed.js +0 -141
  476. data/vendor/assets/javascripts/dojo/cldr/nls/ar/islamic.js.uncompressed.js +0 -188
  477. data/vendor/assets/javascripts/dojo/cldr/nls/ar/number.js.uncompressed.js +0 -19
  478. data/vendor/assets/javascripts/dojo/cldr/nls/buddhist.js.uncompressed.js +0 -268
  479. data/vendor/assets/javascripts/dojo/cldr/nls/ca/currency.js.uncompressed.js +0 -15
  480. data/vendor/assets/javascripts/dojo/cldr/nls/ca/gregorian.js.uncompressed.js +0 -250
  481. data/vendor/assets/javascripts/dojo/cldr/nls/ca/number.js.uncompressed.js +0 -21
  482. data/vendor/assets/javascripts/dojo/cldr/nls/cs/buddhist.js.uncompressed.js +0 -170
  483. data/vendor/assets/javascripts/dojo/cldr/nls/cs/currency.js.uncompressed.js +0 -15
  484. data/vendor/assets/javascripts/dojo/cldr/nls/cs/gregorian.js.uncompressed.js +0 -242
  485. data/vendor/assets/javascripts/dojo/cldr/nls/cs/islamic.js.uncompressed.js +0 -99
  486. data/vendor/assets/javascripts/dojo/cldr/nls/cs/number.js.uncompressed.js +0 -21
  487. data/vendor/assets/javascripts/dojo/cldr/nls/currency.js.uncompressed.js +0 -49
  488. data/vendor/assets/javascripts/dojo/cldr/nls/da/buddhist.js.uncompressed.js +0 -143
  489. data/vendor/assets/javascripts/dojo/cldr/nls/da/currency.js.uncompressed.js +0 -16
  490. data/vendor/assets/javascripts/dojo/cldr/nls/da/gregorian.js.uncompressed.js +0 -255
  491. data/vendor/assets/javascripts/dojo/cldr/nls/da/islamic.js.uncompressed.js +0 -91
  492. data/vendor/assets/javascripts/dojo/cldr/nls/da/number.js.uncompressed.js +0 -21
  493. data/vendor/assets/javascripts/dojo/cldr/nls/de/buddhist.js.uncompressed.js +0 -142
  494. data/vendor/assets/javascripts/dojo/cldr/nls/de/currency.js.uncompressed.js +0 -17
  495. data/vendor/assets/javascripts/dojo/cldr/nls/de/gregorian.js.uncompressed.js +0 -255
  496. data/vendor/assets/javascripts/dojo/cldr/nls/de/islamic.js.uncompressed.js +0 -92
  497. data/vendor/assets/javascripts/dojo/cldr/nls/de/number.js.uncompressed.js +0 -21
  498. data/vendor/assets/javascripts/dojo/cldr/nls/el/buddhist.js.uncompressed.js +0 -194
  499. data/vendor/assets/javascripts/dojo/cldr/nls/el/currency.js.uncompressed.js +0 -16
  500. data/vendor/assets/javascripts/dojo/cldr/nls/el/gregorian.js.uncompressed.js +0 -258
  501. data/vendor/assets/javascripts/dojo/cldr/nls/el/hebrew.js.uncompressed.js +0 -114
  502. data/vendor/assets/javascripts/dojo/cldr/nls/el/number.js.uncompressed.js +0 -20
  503. data/vendor/assets/javascripts/dojo/cldr/nls/en-au/currency.js.uncompressed.js +0 -8
  504. data/vendor/assets/javascripts/dojo/cldr/nls/en-au/gregorian.js.uncompressed.js +0 -24
  505. data/vendor/assets/javascripts/dojo/cldr/nls/en-au/number.js.uncompressed.js +0 -7
  506. data/vendor/assets/javascripts/dojo/cldr/nls/en-ca/currency.js.uncompressed.js +0 -8
  507. data/vendor/assets/javascripts/dojo/cldr/nls/en-ca/gregorian.js.uncompressed.js +0 -22
  508. data/vendor/assets/javascripts/dojo/cldr/nls/en-gb/buddhist.js.uncompressed.js +0 -106
  509. data/vendor/assets/javascripts/dojo/cldr/nls/en-gb/gregorian.js.uncompressed.js +0 -27
  510. data/vendor/assets/javascripts/dojo/cldr/nls/en-gb/islamic.js.uncompressed.js +0 -66
  511. data/vendor/assets/javascripts/dojo/cldr/nls/en-gb/number.js.uncompressed.js +0 -7
  512. data/vendor/assets/javascripts/dojo/cldr/nls/en/buddhist.js.uncompressed.js +0 -114
  513. data/vendor/assets/javascripts/dojo/cldr/nls/en/currency.js.uncompressed.js +0 -17
  514. data/vendor/assets/javascripts/dojo/cldr/nls/en/gregorian.js.uncompressed.js +0 -243
  515. data/vendor/assets/javascripts/dojo/cldr/nls/en/islamic.js.uncompressed.js +0 -79
  516. data/vendor/assets/javascripts/dojo/cldr/nls/en/number.js.uncompressed.js +0 -21
  517. data/vendor/assets/javascripts/dojo/cldr/nls/es/buddhist.js.uncompressed.js +0 -151
  518. data/vendor/assets/javascripts/dojo/cldr/nls/es/currency.js.uncompressed.js +0 -16
  519. data/vendor/assets/javascripts/dojo/cldr/nls/es/gregorian.js.uncompressed.js +0 -259
  520. data/vendor/assets/javascripts/dojo/cldr/nls/es/islamic.js.uncompressed.js +0 -108
  521. data/vendor/assets/javascripts/dojo/cldr/nls/es/number.js.uncompressed.js +0 -21
  522. data/vendor/assets/javascripts/dojo/cldr/nls/fi/buddhist.js.uncompressed.js +0 -214
  523. data/vendor/assets/javascripts/dojo/cldr/nls/fi/currency.js.uncompressed.js +0 -17
  524. data/vendor/assets/javascripts/dojo/cldr/nls/fi/gregorian.js.uncompressed.js +0 -258
  525. data/vendor/assets/javascripts/dojo/cldr/nls/fi/hebrew.js.uncompressed.js +0 -211
  526. data/vendor/assets/javascripts/dojo/cldr/nls/fi/islamic.js.uncompressed.js +0 -191
  527. data/vendor/assets/javascripts/dojo/cldr/nls/fi/number.js.uncompressed.js +0 -21
  528. data/vendor/assets/javascripts/dojo/cldr/nls/fr-ch/gregorian.js.uncompressed.js +0 -9
  529. data/vendor/assets/javascripts/dojo/cldr/nls/fr-ch/number.js.uncompressed.js +0 -9
  530. data/vendor/assets/javascripts/dojo/cldr/nls/fr/buddhist.js.uncompressed.js +0 -160
  531. data/vendor/assets/javascripts/dojo/cldr/nls/fr/currency.js.uncompressed.js +0 -22
  532. data/vendor/assets/javascripts/dojo/cldr/nls/fr/gregorian.js.uncompressed.js +0 -261
  533. data/vendor/assets/javascripts/dojo/cldr/nls/fr/hebrew.js.uncompressed.js +0 -139
  534. data/vendor/assets/javascripts/dojo/cldr/nls/fr/islamic.js.uncompressed.js +0 -177
  535. data/vendor/assets/javascripts/dojo/cldr/nls/fr/number.js.uncompressed.js +0 -21
  536. data/vendor/assets/javascripts/dojo/cldr/nls/gregorian.js.uncompressed.js +0 -296
  537. data/vendor/assets/javascripts/dojo/cldr/nls/he/currency.js.uncompressed.js +0 -15
  538. data/vendor/assets/javascripts/dojo/cldr/nls/he/gregorian.js.uncompressed.js +0 -241
  539. data/vendor/assets/javascripts/dojo/cldr/nls/he/hebrew.js.uncompressed.js +0 -168
  540. data/vendor/assets/javascripts/dojo/cldr/nls/he/islamic.js.uncompressed.js +0 -135
  541. data/vendor/assets/javascripts/dojo/cldr/nls/he/number.js.uncompressed.js +0 -21
  542. data/vendor/assets/javascripts/dojo/cldr/nls/hebrew.js.uncompressed.js +0 -271
  543. data/vendor/assets/javascripts/dojo/cldr/nls/hu/buddhist.js.uncompressed.js +0 -209
  544. data/vendor/assets/javascripts/dojo/cldr/nls/hu/currency.js.uncompressed.js +0 -17
  545. data/vendor/assets/javascripts/dojo/cldr/nls/hu/gregorian.js.uncompressed.js +0 -250
  546. data/vendor/assets/javascripts/dojo/cldr/nls/hu/hebrew.js.uncompressed.js +0 -187
  547. data/vendor/assets/javascripts/dojo/cldr/nls/hu/islamic.js.uncompressed.js +0 -199
  548. data/vendor/assets/javascripts/dojo/cldr/nls/hu/number.js.uncompressed.js +0 -20
  549. data/vendor/assets/javascripts/dojo/cldr/nls/islamic.js.uncompressed.js +0 -269
  550. data/vendor/assets/javascripts/dojo/cldr/nls/it/buddhist.js.uncompressed.js +0 -192
  551. data/vendor/assets/javascripts/dojo/cldr/nls/it/currency.js.uncompressed.js +0 -15
  552. data/vendor/assets/javascripts/dojo/cldr/nls/it/gregorian.js.uncompressed.js +0 -250
  553. data/vendor/assets/javascripts/dojo/cldr/nls/it/islamic.js.uncompressed.js +0 -104
  554. data/vendor/assets/javascripts/dojo/cldr/nls/it/number.js.uncompressed.js +0 -18
  555. data/vendor/assets/javascripts/dojo/cldr/nls/ja/buddhist.js.uncompressed.js +0 -101
  556. data/vendor/assets/javascripts/dojo/cldr/nls/ja/currency.js.uncompressed.js +0 -18
  557. data/vendor/assets/javascripts/dojo/cldr/nls/ja/gregorian.js.uncompressed.js +0 -242
  558. data/vendor/assets/javascripts/dojo/cldr/nls/ja/hebrew.js.uncompressed.js +0 -168
  559. data/vendor/assets/javascripts/dojo/cldr/nls/ja/islamic.js.uncompressed.js +0 -128
  560. data/vendor/assets/javascripts/dojo/cldr/nls/ja/number.js.uncompressed.js +0 -14
  561. data/vendor/assets/javascripts/dojo/cldr/nls/ko/buddhist.js.uncompressed.js +0 -127
  562. data/vendor/assets/javascripts/dojo/cldr/nls/ko/currency.js.uncompressed.js +0 -15
  563. data/vendor/assets/javascripts/dojo/cldr/nls/ko/gregorian.js.uncompressed.js +0 -259
  564. data/vendor/assets/javascripts/dojo/cldr/nls/ko/number.js.uncompressed.js +0 -21
  565. data/vendor/assets/javascripts/dojo/cldr/nls/nb/buddhist.js.uncompressed.js +0 -206
  566. data/vendor/assets/javascripts/dojo/cldr/nls/nb/currency.js.uncompressed.js +0 -15
  567. data/vendor/assets/javascripts/dojo/cldr/nls/nb/gregorian.js.uncompressed.js +0 -257
  568. data/vendor/assets/javascripts/dojo/cldr/nls/nb/islamic.js.uncompressed.js +0 -133
  569. data/vendor/assets/javascripts/dojo/cldr/nls/nb/number.js.uncompressed.js +0 -21
  570. data/vendor/assets/javascripts/dojo/cldr/nls/nl/buddhist.js.uncompressed.js +0 -133
  571. data/vendor/assets/javascripts/dojo/cldr/nls/nl/currency.js.uncompressed.js +0 -15
  572. data/vendor/assets/javascripts/dojo/cldr/nls/nl/gregorian.js.uncompressed.js +0 -251
  573. data/vendor/assets/javascripts/dojo/cldr/nls/nl/hebrew.js.uncompressed.js +0 -123
  574. data/vendor/assets/javascripts/dojo/cldr/nls/nl/islamic.js.uncompressed.js +0 -163
  575. data/vendor/assets/javascripts/dojo/cldr/nls/nl/number.js.uncompressed.js +0 -21
  576. data/vendor/assets/javascripts/dojo/cldr/nls/number.js.uncompressed.js +0 -62
  577. data/vendor/assets/javascripts/dojo/cldr/nls/pl/buddhist.js.uncompressed.js +0 -203
  578. data/vendor/assets/javascripts/dojo/cldr/nls/pl/currency.js.uncompressed.js +0 -15
  579. data/vendor/assets/javascripts/dojo/cldr/nls/pl/gregorian.js.uncompressed.js +0 -262
  580. data/vendor/assets/javascripts/dojo/cldr/nls/pl/hebrew.js.uncompressed.js +0 -166
  581. data/vendor/assets/javascripts/dojo/cldr/nls/pl/islamic.js.uncompressed.js +0 -196
  582. data/vendor/assets/javascripts/dojo/cldr/nls/pl/number.js.uncompressed.js +0 -21
  583. data/vendor/assets/javascripts/dojo/cldr/nls/pt-pt/buddhist.js.uncompressed.js +0 -127
  584. data/vendor/assets/javascripts/dojo/cldr/nls/pt-pt/currency.js.uncompressed.js +0 -8
  585. data/vendor/assets/javascripts/dojo/cldr/nls/pt-pt/gregorian.js.uncompressed.js +0 -157
  586. data/vendor/assets/javascripts/dojo/cldr/nls/pt-pt/islamic.js.uncompressed.js +0 -82
  587. data/vendor/assets/javascripts/dojo/cldr/nls/pt-pt/number.js.uncompressed.js +0 -9
  588. data/vendor/assets/javascripts/dojo/cldr/nls/pt/buddhist.js.uncompressed.js +0 -130
  589. data/vendor/assets/javascripts/dojo/cldr/nls/pt/currency.js.uncompressed.js +0 -15
  590. data/vendor/assets/javascripts/dojo/cldr/nls/pt/gregorian.js.uncompressed.js +0 -256
  591. data/vendor/assets/javascripts/dojo/cldr/nls/pt/hebrew.js.uncompressed.js +0 -137
  592. data/vendor/assets/javascripts/dojo/cldr/nls/pt/islamic.js.uncompressed.js +0 -101
  593. data/vendor/assets/javascripts/dojo/cldr/nls/pt/number.js.uncompressed.js +0 -21
  594. data/vendor/assets/javascripts/dojo/cldr/nls/ro/buddhist.js.uncompressed.js +0 -207
  595. data/vendor/assets/javascripts/dojo/cldr/nls/ro/currency.js.uncompressed.js +0 -16
  596. data/vendor/assets/javascripts/dojo/cldr/nls/ro/gregorian.js.uncompressed.js +0 -262
  597. data/vendor/assets/javascripts/dojo/cldr/nls/ro/hebrew.js.uncompressed.js +0 -169
  598. data/vendor/assets/javascripts/dojo/cldr/nls/ro/islamic.js.uncompressed.js +0 -117
  599. data/vendor/assets/javascripts/dojo/cldr/nls/ro/number.js.uncompressed.js +0 -21
  600. data/vendor/assets/javascripts/dojo/cldr/nls/ru/buddhist.js.uncompressed.js +0 -203
  601. data/vendor/assets/javascripts/dojo/cldr/nls/ru/currency.js.uncompressed.js +0 -17
  602. data/vendor/assets/javascripts/dojo/cldr/nls/ru/gregorian.js.uncompressed.js +0 -261
  603. data/vendor/assets/javascripts/dojo/cldr/nls/ru/hebrew.js.uncompressed.js +0 -169
  604. data/vendor/assets/javascripts/dojo/cldr/nls/ru/islamic.js.uncompressed.js +0 -197
  605. data/vendor/assets/javascripts/dojo/cldr/nls/ru/number.js.uncompressed.js +0 -21
  606. data/vendor/assets/javascripts/dojo/cldr/nls/sk/currency.js.uncompressed.js +0 -15
  607. data/vendor/assets/javascripts/dojo/cldr/nls/sk/gregorian.js.uncompressed.js +0 -249
  608. data/vendor/assets/javascripts/dojo/cldr/nls/sk/number.js.uncompressed.js +0 -12
  609. data/vendor/assets/javascripts/dojo/cldr/nls/sl/currency.js.uncompressed.js +0 -17
  610. data/vendor/assets/javascripts/dojo/cldr/nls/sl/gregorian.js.uncompressed.js +0 -241
  611. data/vendor/assets/javascripts/dojo/cldr/nls/sl/number.js.uncompressed.js +0 -21
  612. data/vendor/assets/javascripts/dojo/cldr/nls/sv/buddhist.js.uncompressed.js +0 -209
  613. data/vendor/assets/javascripts/dojo/cldr/nls/sv/currency.js.uncompressed.js +0 -16
  614. data/vendor/assets/javascripts/dojo/cldr/nls/sv/gregorian.js.uncompressed.js +0 -257
  615. data/vendor/assets/javascripts/dojo/cldr/nls/sv/hebrew.js.uncompressed.js +0 -167
  616. data/vendor/assets/javascripts/dojo/cldr/nls/sv/islamic.js.uncompressed.js +0 -189
  617. data/vendor/assets/javascripts/dojo/cldr/nls/sv/number.js.uncompressed.js +0 -21
  618. data/vendor/assets/javascripts/dojo/cldr/nls/th/buddhist.js.uncompressed.js +0 -144
  619. data/vendor/assets/javascripts/dojo/cldr/nls/th/currency.js.uncompressed.js +0 -16
  620. data/vendor/assets/javascripts/dojo/cldr/nls/th/gregorian.js.uncompressed.js +0 -255
  621. data/vendor/assets/javascripts/dojo/cldr/nls/th/hebrew.js.uncompressed.js +0 -139
  622. data/vendor/assets/javascripts/dojo/cldr/nls/th/islamic.js.uncompressed.js +0 -134
  623. data/vendor/assets/javascripts/dojo/cldr/nls/th/number.js.uncompressed.js +0 -21
  624. data/vendor/assets/javascripts/dojo/cldr/nls/tr/buddhist.js.uncompressed.js +0 -203
  625. data/vendor/assets/javascripts/dojo/cldr/nls/tr/currency.js.uncompressed.js +0 -17
  626. data/vendor/assets/javascripts/dojo/cldr/nls/tr/gregorian.js.uncompressed.js +0 -253
  627. data/vendor/assets/javascripts/dojo/cldr/nls/tr/hebrew.js.uncompressed.js +0 -161
  628. data/vendor/assets/javascripts/dojo/cldr/nls/tr/islamic.js.uncompressed.js +0 -181
  629. data/vendor/assets/javascripts/dojo/cldr/nls/tr/number.js.uncompressed.js +0 -21
  630. data/vendor/assets/javascripts/dojo/cldr/nls/zh-hant/buddhist.js.uncompressed.js +0 -192
  631. data/vendor/assets/javascripts/dojo/cldr/nls/zh-hant/currency.js.uncompressed.js +0 -17
  632. data/vendor/assets/javascripts/dojo/cldr/nls/zh-hant/gregorian.js.uncompressed.js +0 -226
  633. data/vendor/assets/javascripts/dojo/cldr/nls/zh-hant/hebrew.js.uncompressed.js +0 -182
  634. data/vendor/assets/javascripts/dojo/cldr/nls/zh-hant/islamic.js.uncompressed.js +0 -186
  635. data/vendor/assets/javascripts/dojo/cldr/nls/zh-hant/number.js.uncompressed.js +0 -9
  636. data/vendor/assets/javascripts/dojo/cldr/nls/zh-hk/currency.js.uncompressed.js +0 -15
  637. data/vendor/assets/javascripts/dojo/cldr/nls/zh-hk/gregorian.js.uncompressed.js +0 -82
  638. data/vendor/assets/javascripts/dojo/cldr/nls/zh-hk/number.js.uncompressed.js +0 -7
  639. data/vendor/assets/javascripts/dojo/cldr/nls/zh-tw/currency.js.uncompressed.js +0 -15
  640. data/vendor/assets/javascripts/dojo/cldr/nls/zh-tw/gregorian.js.uncompressed.js +0 -82
  641. data/vendor/assets/javascripts/dojo/cldr/nls/zh-tw/number.js.uncompressed.js +0 -7
  642. data/vendor/assets/javascripts/dojo/cldr/nls/zh/buddhist.js.uncompressed.js +0 -205
  643. data/vendor/assets/javascripts/dojo/cldr/nls/zh/currency.js.uncompressed.js +0 -16
  644. data/vendor/assets/javascripts/dojo/cldr/nls/zh/gregorian.js.uncompressed.js +0 -264
  645. data/vendor/assets/javascripts/dojo/cldr/nls/zh/hebrew.js.uncompressed.js +0 -181
  646. data/vendor/assets/javascripts/dojo/cldr/nls/zh/islamic.js.uncompressed.js +0 -137
  647. data/vendor/assets/javascripts/dojo/cldr/nls/zh/number.js.uncompressed.js +0 -13
  648. data/vendor/assets/javascripts/dojo/cldr/supplemental.js.uncompressed.js +0 -84
  649. data/vendor/assets/javascripts/dojo/colors.js.uncompressed.js +0 -232
  650. data/vendor/assets/javascripts/dojo/cookie.js.uncompressed.js +0 -98
  651. data/vendor/assets/javascripts/dojo/currency.js.uncompressed.js +0 -130
  652. data/vendor/assets/javascripts/dojo/data/ItemFileReadStore.js.uncompressed.js +0 -951
  653. data/vendor/assets/javascripts/dojo/data/ItemFileWriteStore.js.uncompressed.js +0 -816
  654. data/vendor/assets/javascripts/dojo/data/ObjectStore.js.uncompressed.js +0 -544
  655. data/vendor/assets/javascripts/dojo/data/api/Identity.js.uncompressed.js +0 -109
  656. data/vendor/assets/javascripts/dojo/data/api/Item.js.uncompressed.js +0 -13
  657. data/vendor/assets/javascripts/dojo/data/api/Notification.js.uncompressed.js +0 -110
  658. data/vendor/assets/javascripts/dojo/data/api/Read.js.uncompressed.js +0 -486
  659. data/vendor/assets/javascripts/dojo/data/api/Request.js.uncompressed.js +0 -33
  660. data/vendor/assets/javascripts/dojo/data/api/Write.js.uncompressed.js +0 -206
  661. data/vendor/assets/javascripts/dojo/data/util/filter.js.uncompressed.js +0 -77
  662. data/vendor/assets/javascripts/dojo/data/util/simpleFetch.js.uncompressed.js +0 -240
  663. data/vendor/assets/javascripts/dojo/data/util/sorter.js.uncompressed.js +0 -99
  664. data/vendor/assets/javascripts/dojo/date.js.uncompressed.js +0 -346
  665. data/vendor/assets/javascripts/dojo/date/locale.js.uncompressed.js +0 -694
  666. data/vendor/assets/javascripts/dojo/date/stamp.js.uncompressed.js +0 -144
  667. data/vendor/assets/javascripts/dojo/dnd/AutoSource.js.uncompressed.js +0 -12
  668. data/vendor/assets/javascripts/dojo/dnd/Avatar.js.uncompressed.js +0 -122
  669. data/vendor/assets/javascripts/dojo/dnd/Container.js.uncompressed.js +0 -456
  670. data/vendor/assets/javascripts/dojo/dnd/Manager.js.uncompressed.js +0 -223
  671. data/vendor/assets/javascripts/dojo/dnd/Moveable.js.uncompressed.js +0 -185
  672. data/vendor/assets/javascripts/dojo/dnd/Mover.js.uncompressed.js +0 -124
  673. data/vendor/assets/javascripts/dojo/dnd/Selector.js.uncompressed.js +0 -329
  674. data/vendor/assets/javascripts/dojo/dnd/Source.js.uncompressed.js +0 -506
  675. data/vendor/assets/javascripts/dojo/dnd/Target.js.uncompressed.js +0 -13
  676. data/vendor/assets/javascripts/dojo/dnd/TimedMoveable.js.uncompressed.js +0 -64
  677. data/vendor/assets/javascripts/dojo/dnd/autoscroll.js.uncompressed.js +0 -149
  678. data/vendor/assets/javascripts/dojo/dnd/common.js.uncompressed.js +0 -41
  679. data/vendor/assets/javascripts/dojo/dnd/move.js.uncompressed.js +0 -147
  680. data/vendor/assets/javascripts/dojo/dojo.js.uncompressed.js +0 -17702
  681. data/vendor/assets/javascripts/dojo/dom-attr.js.uncompressed.js +0 -220
  682. data/vendor/assets/javascripts/dojo/dom-class.js.uncompressed.js +0 -326
  683. data/vendor/assets/javascripts/dojo/dom-construct.js.uncompressed.js +0 -333
  684. data/vendor/assets/javascripts/dojo/dom-form.js.uncompressed.js +0 -149
  685. data/vendor/assets/javascripts/dojo/dom-geometry.js.uncompressed.js +0 -605
  686. data/vendor/assets/javascripts/dojo/dom-prop.js.uncompressed.js +0 -181
  687. data/vendor/assets/javascripts/dojo/dom-style.js.uncompressed.js +0 -306
  688. data/vendor/assets/javascripts/dojo/dom.js.uncompressed.js +0 -148
  689. data/vendor/assets/javascripts/dojo/domReady.js.uncompressed.js +0 -97
  690. data/vendor/assets/javascripts/dojo/errors/CancelError.js.uncompressed.js +0 -13
  691. data/vendor/assets/javascripts/dojo/errors/RequestError.js.uncompressed.js +0 -15
  692. data/vendor/assets/javascripts/dojo/errors/RequestTimeoutError.js.uncompressed.js +0 -15
  693. data/vendor/assets/javascripts/dojo/errors/create.js.uncompressed.js +0 -41
  694. data/vendor/assets/javascripts/dojo/fx.js.uncompressed.js +0 -419
  695. data/vendor/assets/javascripts/dojo/fx/Toggler.js.uncompressed.js +0 -101
  696. data/vendor/assets/javascripts/dojo/fx/easing.js.uncompressed.js +0 -276
  697. data/vendor/assets/javascripts/dojo/gears.js.uncompressed.js +0 -65
  698. data/vendor/assets/javascripts/dojo/has.js.uncompressed.js +0 -173
  699. data/vendor/assets/javascripts/dojo/hash.js.uncompressed.js +0 -256
  700. data/vendor/assets/javascripts/dojo/hccss.js.uncompressed.js +0 -51
  701. data/vendor/assets/javascripts/dojo/html.js.uncompressed.js +0 -373
  702. data/vendor/assets/javascripts/dojo/i18n.js.uncompressed.js +0 -550
  703. data/vendor/assets/javascripts/dojo/io-query.js.uncompressed.js +0 -97
  704. data/vendor/assets/javascripts/dojo/io/iframe.js.uncompressed.js +0 -190
  705. data/vendor/assets/javascripts/dojo/io/script.js.uncompressed.js +0 -249
  706. data/vendor/assets/javascripts/dojo/jaxer.js.uncompressed.js +0 -17
  707. data/vendor/assets/javascripts/dojo/json.js.uncompressed.js +0 -152
  708. data/vendor/assets/javascripts/dojo/keys.js.uncompressed.js +0 -77
  709. data/vendor/assets/javascripts/dojo/loadInit.js.uncompressed.js +0 -7
  710. data/vendor/assets/javascripts/dojo/main.js.uncompressed.js +0 -52
  711. data/vendor/assets/javascripts/dojo/mouse.js.uncompressed.js +0 -171
  712. data/vendor/assets/javascripts/dojo/nls/ar/colors.js.uncompressed.js +0 -156
  713. data/vendor/assets/javascripts/dojo/nls/az/colors.js.uncompressed.js +0 -151
  714. data/vendor/assets/javascripts/dojo/nls/ca/colors.js.uncompressed.js +0 -156
  715. data/vendor/assets/javascripts/dojo/nls/cs/colors.js.uncompressed.js +0 -156
  716. data/vendor/assets/javascripts/dojo/nls/da/colors.js.uncompressed.js +0 -156
  717. data/vendor/assets/javascripts/dojo/nls/de/colors.js.uncompressed.js +0 -156
  718. data/vendor/assets/javascripts/dojo/nls/el/colors.js.uncompressed.js +0 -156
  719. data/vendor/assets/javascripts/dojo/nls/es/colors.js.uncompressed.js +0 -156
  720. data/vendor/assets/javascripts/dojo/nls/fi/colors.js.uncompressed.js +0 -156
  721. data/vendor/assets/javascripts/dojo/nls/fr/colors.js.uncompressed.js +0 -156
  722. data/vendor/assets/javascripts/dojo/nls/he/colors.js.uncompressed.js +0 -155
  723. data/vendor/assets/javascripts/dojo/nls/hr/colors.js.uncompressed.js +0 -156
  724. data/vendor/assets/javascripts/dojo/nls/hu/colors.js.uncompressed.js +0 -156
  725. data/vendor/assets/javascripts/dojo/nls/it/colors.js.uncompressed.js +0 -156
  726. data/vendor/assets/javascripts/dojo/nls/ja/colors.js.uncompressed.js +0 -156
  727. data/vendor/assets/javascripts/dojo/nls/kk/colors.js.uncompressed.js +0 -156
  728. data/vendor/assets/javascripts/dojo/nls/ko/colors.js.uncompressed.js +0 -156
  729. data/vendor/assets/javascripts/dojo/nls/nb/colors.js.uncompressed.js +0 -156
  730. data/vendor/assets/javascripts/dojo/nls/nl/colors.js.uncompressed.js +0 -156
  731. data/vendor/assets/javascripts/dojo/nls/pl/colors.js.uncompressed.js +0 -156
  732. data/vendor/assets/javascripts/dojo/nls/pt-pt/colors.js.uncompressed.js +0 -156
  733. data/vendor/assets/javascripts/dojo/nls/pt/colors.js.uncompressed.js +0 -156
  734. data/vendor/assets/javascripts/dojo/nls/ro/colors.js.uncompressed.js +0 -156
  735. data/vendor/assets/javascripts/dojo/nls/ru/colors.js.uncompressed.js +0 -156
  736. data/vendor/assets/javascripts/dojo/nls/sk/colors.js.uncompressed.js +0 -156
  737. data/vendor/assets/javascripts/dojo/nls/sl/colors.js.uncompressed.js +0 -156
  738. data/vendor/assets/javascripts/dojo/nls/sv/colors.js.uncompressed.js +0 -156
  739. data/vendor/assets/javascripts/dojo/nls/th/colors.js.uncompressed.js +0 -156
  740. data/vendor/assets/javascripts/dojo/nls/tr/colors.js.uncompressed.js +0 -156
  741. data/vendor/assets/javascripts/dojo/nls/zh-tw/colors.js.uncompressed.js +0 -156
  742. data/vendor/assets/javascripts/dojo/nls/zh/colors.js.uncompressed.js +0 -156
  743. data/vendor/assets/javascripts/dojo/node.js.uncompressed.js +0 -27
  744. data/vendor/assets/javascripts/dojo/number.js.uncompressed.js +0 -548
  745. data/vendor/assets/javascripts/dojo/on.js.uncompressed.js +0 -517
  746. data/vendor/assets/javascripts/dojo/parser.js.uncompressed.js +0 -865
  747. data/vendor/assets/javascripts/dojo/promise/Promise.js.uncompressed.js +0 -133
  748. data/vendor/assets/javascripts/dojo/promise/all.js.uncompressed.js +0 -76
  749. data/vendor/assets/javascripts/dojo/promise/first.js.uncompressed.js +0 -49
  750. data/vendor/assets/javascripts/dojo/promise/instrumentation.js.uncompressed.js +0 -103
  751. data/vendor/assets/javascripts/dojo/promise/tracer.js.uncompressed.js +0 -85
  752. data/vendor/assets/javascripts/dojo/query.js.uncompressed.js +0 -705
  753. data/vendor/assets/javascripts/dojo/ready.js.uncompressed.js +0 -136
  754. data/vendor/assets/javascripts/dojo/regexp.js.uncompressed.js +0 -70
  755. data/vendor/assets/javascripts/dojo/request.js.uncompressed.js +0 -75
  756. data/vendor/assets/javascripts/dojo/request/default.js.uncompressed.js +0 -32
  757. data/vendor/assets/javascripts/dojo/request/handlers.js.uncompressed.js +0 -62
  758. data/vendor/assets/javascripts/dojo/request/iframe.js.uncompressed.js +0 -429
  759. data/vendor/assets/javascripts/dojo/request/node.js.uncompressed.js +0 -188
  760. data/vendor/assets/javascripts/dojo/request/notify.js.uncompressed.js +0 -73
  761. data/vendor/assets/javascripts/dojo/request/registry.js.uncompressed.js +0 -85
  762. data/vendor/assets/javascripts/dojo/request/script.js.uncompressed.js +0 -211
  763. data/vendor/assets/javascripts/dojo/request/util.js.uncompressed.js +0 -145
  764. data/vendor/assets/javascripts/dojo/request/watch.js.uncompressed.js +0 -109
  765. data/vendor/assets/javascripts/dojo/request/xhr.js.uncompressed.js +0 -317
  766. data/vendor/assets/javascripts/dojo/require.js.uncompressed.js +0 -7
  767. data/vendor/assets/javascripts/dojo/router.js.uncompressed.js +0 -28
  768. data/vendor/assets/javascripts/dojo/router/RouterBase.js.uncompressed.js +0 -350
  769. data/vendor/assets/javascripts/dojo/rpc/JsonService.js.uncompressed.js +0 -87
  770. data/vendor/assets/javascripts/dojo/rpc/JsonpService.js.uncompressed.js +0 -66
  771. data/vendor/assets/javascripts/dojo/rpc/RpcService.js.uncompressed.js +0 -178
  772. data/vendor/assets/javascripts/dojo/selector/_loader.js.uncompressed.js +0 -47
  773. data/vendor/assets/javascripts/dojo/selector/acme.js.uncompressed.js +0 -1493
  774. data/vendor/assets/javascripts/dojo/selector/lite.js.uncompressed.js +0 -283
  775. data/vendor/assets/javascripts/dojo/sniff.js.uncompressed.js +0 -70
  776. data/vendor/assets/javascripts/dojo/store/Cache.js.uncompressed.js +0 -145
  777. data/vendor/assets/javascripts/dojo/store/DataStore.js.uncompressed.js +0 -202
  778. data/vendor/assets/javascripts/dojo/store/JsonRest.js.uncompressed.js +0 -189
  779. data/vendor/assets/javascripts/dojo/store/Memory.js.uncompressed.js +0 -164
  780. data/vendor/assets/javascripts/dojo/store/Observable.js.uncompressed.js +0 -187
  781. data/vendor/assets/javascripts/dojo/store/api/Store.js.uncompressed.js +0 -287
  782. data/vendor/assets/javascripts/dojo/store/util/QueryResults.js.uncompressed.js +0 -63
  783. data/vendor/assets/javascripts/dojo/store/util/SimpleQueryEngine.js.uncompressed.js +0 -110
  784. data/vendor/assets/javascripts/dojo/string.js.uncompressed.js +0 -162
  785. data/vendor/assets/javascripts/dojo/text.js.uncompressed.js +0 -214
  786. data/vendor/assets/javascripts/dojo/topic.js.uncompressed.js +0 -38
  787. data/vendor/assets/javascripts/dojo/touch.js.uncompressed.js +0 -201
  788. data/vendor/assets/javascripts/dojo/uacss.js.uncompressed.js +0 -75
  789. data/vendor/assets/javascripts/dojo/when.js.uncompressed.js +0 -55
  790. data/vendor/assets/javascripts/dojo/window.js.uncompressed.js +0 -168
@@ -1,66 +0,0 @@
1
- define("dojo/rpc/JsonpService", [
2
- "../_base/array", "../_base/declare", "../_base/lang", "./RpcService", "../io/script"],
3
- function(array, declare, lang, RpcService, script){
4
-
5
- // module:
6
- // dojo/rpc/JsonpService
7
-
8
- return declare("dojo.rpc.JsonpService", RpcService, {
9
- // summary:
10
- // Generic JSONP service. Minimally extends RpcService to allow
11
- // easy definition of nearly any JSONP style service. Example
12
- // SMD files exist in dojox.data
13
-
14
- constructor: function(args, requiredArgs){
15
- if(this.required){
16
- if(requiredArgs){
17
- lang.mixin(this.required, requiredArgs);
18
- }
19
-
20
- array.forEach(this.required, function(req){
21
- if(req=="" || req==undefined){
22
- throw new Error("Required Service Argument not found: "+req);
23
- }
24
- });
25
- }
26
- },
27
-
28
- strictArgChecks: false,
29
-
30
- bind: function(method, parameters, deferredRequestHandler, url){
31
- // summary:
32
- // JSONP bind method. Takes remote method, parameters,
33
- // deferred, and a url, calls createRequest to make a JSON-RPC
34
- // envelope and passes that off with bind.
35
- // method: string
36
- // The name of the method we are calling
37
- // parameters: array
38
- // The parameters we are passing off to the method
39
- // deferredRequestHandler: deferred
40
- // The Deferred object for this particular request
41
-
42
- var def = script.get({
43
- url: url||this.serviceUrl,
44
- callbackParamName: this.callbackParamName||"callback",
45
- content: this.createRequest(parameters),
46
- timeout: this.timeout,
47
- handleAs: "json",
48
- preventCache: true
49
- });
50
- def.addCallbacks(this.resultCallback(deferredRequestHandler), this.errorCallback(deferredRequestHandler));
51
- },
52
-
53
- createRequest: function(parameters){
54
- // summary:
55
- // create a JSONP req
56
- // params: array
57
- // The array of parameters for this request;
58
-
59
- var params = (lang.isArrayLike(parameters) && parameters.length==1) ?
60
- parameters[0] : {};
61
- lang.mixin(params,this.required);
62
- return params;
63
- }
64
- });
65
-
66
- });
@@ -1,178 +0,0 @@
1
- define("dojo/rpc/RpcService", [
2
- "../_base/array", "../_base/declare", "../_base/Deferred", "../_base/kernel","../_base/lang",
3
- "../_base/url", "../_base/xhr"
4
- ], function(array, declare, Deferred, kernel, lang, _Url, xhr){
5
-
6
- // module:
7
- // dojo/rpc/RpcService
8
-
9
- return declare("dojo.rpc.RpcService", null, {
10
- // summary:
11
- // TODOC
12
-
13
- constructor: function(args){
14
- // summary:
15
- // Take a string as a url to retrieve an smd or an object that is an smd or partial smd to use
16
- // as a definition for the service
17
- //
18
- // args: object
19
- // Takes a number of properties as kwArgs for defining the service. It also
20
- // accepts a string. When passed a string, it is treated as a url from
21
- // which it should synchronously retrieve an smd file. Otherwise it is a kwArgs
22
- // object. It accepts serviceUrl, to manually define a url for the rpc service
23
- // allowing the rpc system to be used without an smd definition. strictArgChecks
24
- // forces the system to verify that the # of arguments provided in a call
25
- // matches those defined in the smd. smdString allows a developer to pass
26
- // a jsonString directly, which will be converted into an object or alternatively
27
- // smdObject is accepts an smdObject directly.
28
- //
29
- if(args){
30
- //if the arg is a string, we assume it is a url to retrieve an smd definition from
31
- if( (lang.isString(args)) || (args instanceof _Url)){
32
- if (args instanceof _Url){
33
- var url = args + "";
34
- }else{
35
- url = args;
36
- }
37
- var def = xhr.get({
38
- url: url,
39
- handleAs: "json-comment-optional",
40
- sync: true
41
- });
42
-
43
- def.addCallback(this, "processSmd");
44
- def.addErrback(function(){
45
- throw new Error("Unable to load SMD from " + args);
46
- });
47
-
48
- }else if(args.smdStr){
49
- this.processSmd(kernel.eval("("+args.smdStr+")"));
50
- }else{
51
- // otherwise we assume it's an arguments object with the following
52
- // (optional) properties:
53
- // - serviceUrl
54
- // - strictArgChecks
55
- // - smdStr
56
- // - smdObj
57
-
58
- if(args.serviceUrl){
59
- this.serviceUrl = args.serviceUrl;
60
- }
61
-
62
- this.timeout = args.timeout || 3000;
63
-
64
- if("strictArgChecks" in args){
65
- this.strictArgChecks = args.strictArgChecks;
66
- }
67
-
68
- this.processSmd(args);
69
- }
70
- }
71
- },
72
-
73
- strictArgChecks: true,
74
- serviceUrl: "",
75
-
76
- parseResults: function(obj){
77
- // summary:
78
- // parse the results coming back from an rpc request. this
79
- // base implementation, just returns the full object
80
- // subclasses should parse and only return the actual results
81
- // obj: Object
82
- // Object that is the return results from an rpc request
83
- return obj;
84
- },
85
-
86
- errorCallback: function(/* dojo/_base/Deferred */ deferredRequestHandler){
87
- // summary:
88
- // create callback that calls the Deferred errback method
89
- // deferredRequestHandler: Deferred
90
- // The deferred object handling a request.
91
- return function(data){
92
- deferredRequestHandler.errback(data.message);
93
- };
94
- },
95
-
96
- resultCallback: function(/* dojo/_base/Deferred */ deferredRequestHandler){
97
- // summary:
98
- // create callback that calls the Deferred's callback method
99
- // deferredRequestHandler: Deferred
100
- // The deferred object handling a request.
101
-
102
- return lang.hitch(this,
103
- function(obj){
104
- if(obj.error!=null){
105
- var err;
106
- if(typeof obj.error == 'object'){
107
- err = new Error(obj.error.message);
108
- err.code = obj.error.code;
109
- err.error = obj.error.error;
110
- }else{
111
- err = new Error(obj.error);
112
- }
113
- err.id = obj.id;
114
- err.errorObject = obj;
115
- deferredRequestHandler.errback(err);
116
- }else{
117
- deferredRequestHandler.callback(this.parseResults(obj));
118
- }
119
- }
120
- );
121
- },
122
-
123
- generateMethod: function(/*string*/ method, /*array*/ parameters, /*string*/ url){
124
- // summary:
125
- // generate the local bind methods for the remote object
126
- // method: string
127
- // The name of the method we are generating
128
- // parameters: array
129
- // the array of parameters for this call.
130
- // url: string
131
- // the service url for this call
132
-
133
- return lang.hitch(this, function(){
134
- var deferredRequestHandler = new Deferred();
135
-
136
- // if params weren't specified, then we can assume it's varargs
137
- if( (this.strictArgChecks) &&
138
- (parameters != null) &&
139
- (arguments.length != parameters.length)
140
- ){
141
- // put error stuff here, no enough params
142
- throw new Error("Invalid number of parameters for remote method.");
143
- }else{
144
- this.bind(method, lang._toArray(arguments), deferredRequestHandler, url);
145
- }
146
-
147
- return deferredRequestHandler;
148
- });
149
- },
150
-
151
- processSmd: function(object){
152
- // summary:
153
- // callback method for receipt of a smd object. Parse the smd
154
- // and generate functions based on the description
155
- // object:
156
- // smd object defining this service.
157
-
158
- if(object.methods){
159
- array.forEach(object.methods, function(m){
160
- if(m && m.name){
161
- this[m.name] = this.generateMethod( m.name,
162
- m.parameters,
163
- m.url||m.serviceUrl||m.serviceURL);
164
- if(!lang.isFunction(this[m.name])){
165
- throw new Error("RpcService: Failed to create" + m.name + "()");
166
- /*console.log("RpcService: Failed to create", m.name, "()");*/
167
- }
168
- }
169
- }, this);
170
- }
171
-
172
- this.serviceUrl = object.serviceUrl||object.serviceURL;
173
- this.required = object.required;
174
- this.smd = object;
175
- }
176
- });
177
-
178
- });
@@ -1,47 +0,0 @@
1
- define("dojo/selector/_loader", ["../has", "require"],
2
- function(has, require){
3
-
4
- "use strict";
5
- var testDiv = document.createElement("div");
6
- has.add("dom-qsa2.1", !!testDiv.querySelectorAll);
7
- has.add("dom-qsa3", function(){
8
- // test to see if we have a reasonable native selector engine available
9
- try{
10
- testDiv.innerHTML = "<p class='TEST'></p>"; // test kind of from sizzle
11
- // Safari can't handle uppercase or unicode characters when
12
- // in quirks mode, IE8 can't handle pseudos like :empty
13
- return testDiv.querySelectorAll(".TEST:empty").length == 1;
14
- }catch(e){}
15
- });
16
- var fullEngine;
17
- var acme = "./acme", lite = "./lite";
18
- return {
19
- // summary:
20
- // This module handles loading the appropriate selector engine for the given browser
21
-
22
- load: function(id, parentRequire, loaded, config){
23
- var req = require;
24
- // here we implement the default logic for choosing a selector engine
25
- id = id == "default" ? has("config-selectorEngine") || "css3" : id;
26
- id = id == "css2" || id == "lite" ? lite :
27
- id == "css2.1" ? has("dom-qsa2.1") ? lite : acme :
28
- id == "css3" ? has("dom-qsa3") ? lite : acme :
29
- id == "acme" ? acme : (req = parentRequire) && id;
30
- if(id.charAt(id.length-1) == '?'){
31
- id = id.substring(0,id.length - 1);
32
- var optionalLoad = true;
33
- }
34
- // the query engine is optional, only load it if a native one is not available or existing one has not been loaded
35
- if(optionalLoad && (has("dom-compliant-qsa") || fullEngine)){
36
- return loaded(fullEngine);
37
- }
38
- // load the referenced selector engine
39
- req([id], function(engine){
40
- if(id != "./lite"){
41
- fullEngine = engine;
42
- }
43
- loaded(engine);
44
- });
45
- }
46
- };
47
- });
@@ -1,1493 +0,0 @@
1
- define("dojo/selector/acme", [
2
- "../dom", "../sniff", "../_base/array", "../_base/lang", "../_base/window"
3
- ], function(dom, has, array, lang, win){
4
-
5
- // module:
6
- // dojo/selector/acme
7
-
8
- /*
9
- acme architectural overview:
10
-
11
- acme is a relatively full-featured CSS3 query library. It is
12
- designed to take any valid CSS3 selector and return the nodes matching
13
- the selector. To do this quickly, it processes queries in several
14
- steps, applying caching where profitable.
15
-
16
- The steps (roughly in reverse order of the way they appear in the code):
17
- 1.) check to see if we already have a "query dispatcher"
18
- - if so, use that with the given parameterization. Skip to step 4.
19
- 2.) attempt to determine which branch to dispatch the query to:
20
- - JS (optimized DOM iteration)
21
- - native (FF3.1+, Safari 3.1+, IE 8+)
22
- 3.) tokenize and convert to executable "query dispatcher"
23
- - this is where the lion's share of the complexity in the
24
- system lies. In the DOM version, the query dispatcher is
25
- assembled as a chain of "yes/no" test functions pertaining to
26
- a section of a simple query statement (".blah:nth-child(odd)"
27
- but not "div div", which is 2 simple statements). Individual
28
- statement dispatchers are cached (to prevent re-definition)
29
- as are entire dispatch chains (to make re-execution of the
30
- same query fast)
31
- 4.) the resulting query dispatcher is called in the passed scope
32
- (by default the top-level document)
33
- - for DOM queries, this results in a recursive, top-down
34
- evaluation of nodes based on each simple query section
35
- - for native implementations, this may mean working around spec
36
- bugs. So be it.
37
- 5.) matched nodes are pruned to ensure they are unique (if necessary)
38
- */
39
-
40
-
41
- ////////////////////////////////////////////////////////////////////////
42
- // Toolkit aliases
43
- ////////////////////////////////////////////////////////////////////////
44
-
45
- // if you are extracting acme for use in your own system, you will
46
- // need to provide these methods and properties. No other porting should be
47
- // necessary, save for configuring the system to use a class other than
48
- // dojo/NodeList as the return instance instantiator
49
- var trim = lang.trim;
50
- var each = array.forEach;
51
-
52
- var getDoc = function(){ return win.doc; };
53
- // NOTE(alex): the spec is idiotic. CSS queries should ALWAYS be case-sensitive, but nooooooo
54
- var cssCaseBug = (getDoc().compatMode) == "BackCompat";
55
-
56
- ////////////////////////////////////////////////////////////////////////
57
- // Global utilities
58
- ////////////////////////////////////////////////////////////////////////
59
-
60
-
61
- var specials = ">~+";
62
-
63
- // global thunk to determine whether we should treat the current query as
64
- // case sensitive or not. This switch is flipped by the query evaluator
65
- // based on the document passed as the context to search.
66
- var caseSensitive = false;
67
-
68
- // how high?
69
- var yesman = function(){ return true; };
70
-
71
- ////////////////////////////////////////////////////////////////////////
72
- // Tokenizer
73
- ////////////////////////////////////////////////////////////////////////
74
-
75
- var getQueryParts = function(query){
76
- // summary:
77
- // state machine for query tokenization
78
- // description:
79
- // instead of using a brittle and slow regex-based CSS parser,
80
- // acme implements an AST-style query representation. This
81
- // representation is only generated once per query. For example,
82
- // the same query run multiple times or under different root nodes
83
- // does not re-parse the selector expression but instead uses the
84
- // cached data structure. The state machine implemented here
85
- // terminates on the last " " (space) character and returns an
86
- // ordered array of query component structures (or "parts"). Each
87
- // part represents an operator or a simple CSS filtering
88
- // expression. The structure for parts is documented in the code
89
- // below.
90
-
91
-
92
- // NOTE:
93
- // this code is designed to run fast and compress well. Sacrifices
94
- // to readability and maintainability have been made. Your best
95
- // bet when hacking the tokenizer is to put The Donnas on *really*
96
- // loud (may we recommend their "Spend The Night" release?) and
97
- // just assume you're gonna make mistakes. Keep the unit tests
98
- // open and run them frequently. Knowing is half the battle ;-)
99
- if(specials.indexOf(query.slice(-1)) >= 0){
100
- // if we end with a ">", "+", or "~", that means we're implicitly
101
- // searching all children, so make it explicit
102
- query += " * ";
103
- }else{
104
- // if you have not provided a terminator, one will be provided for
105
- // you...
106
- query += " ";
107
- }
108
-
109
- var ts = function(/*Integer*/ s, /*Integer*/ e){
110
- // trim and slice.
111
-
112
- // take an index to start a string slice from and an end position
113
- // and return a trimmed copy of that sub-string
114
- return trim(query.slice(s, e));
115
- };
116
-
117
- // the overall data graph of the full query, as represented by queryPart objects
118
- var queryParts = [];
119
-
120
-
121
- // state keeping vars
122
- var inBrackets = -1, inParens = -1, inMatchFor = -1,
123
- inPseudo = -1, inClass = -1, inId = -1, inTag = -1, currentQuoteChar,
124
- lc = "", cc = "", pStart;
125
-
126
- // iteration vars
127
- var x = 0, // index in the query
128
- ql = query.length,
129
- currentPart = null, // data structure representing the entire clause
130
- _cp = null; // the current pseudo or attr matcher
131
-
132
- // several temporary variables are assigned to this structure during a
133
- // potential sub-expression match:
134
- // attr:
135
- // a string representing the current full attribute match in a
136
- // bracket expression
137
- // type:
138
- // if there's an operator in a bracket expression, this is
139
- // used to keep track of it
140
- // value:
141
- // the internals of parenthetical expression for a pseudo. for
142
- // :nth-child(2n+1), value might be "2n+1"
143
-
144
- var endTag = function(){
145
- // called when the tokenizer hits the end of a particular tag name.
146
- // Re-sets state variables for tag matching and sets up the matcher
147
- // to handle the next type of token (tag or operator).
148
- if(inTag >= 0){
149
- var tv = (inTag == x) ? null : ts(inTag, x); // .toLowerCase();
150
- currentPart[ (specials.indexOf(tv) < 0) ? "tag" : "oper" ] = tv;
151
- inTag = -1;
152
- }
153
- };
154
-
155
- var endId = function(){
156
- // called when the tokenizer might be at the end of an ID portion of a match
157
- if(inId >= 0){
158
- currentPart.id = ts(inId, x).replace(/\\/g, "");
159
- inId = -1;
160
- }
161
- };
162
-
163
- var endClass = function(){
164
- // called when the tokenizer might be at the end of a class name
165
- // match. CSS allows for multiple classes, so we augment the
166
- // current item with another class in its list
167
- if(inClass >= 0){
168
- currentPart.classes.push(ts(inClass + 1, x).replace(/\\/g, ""));
169
- inClass = -1;
170
- }
171
- };
172
-
173
- var endAll = function(){
174
- // at the end of a simple fragment, so wall off the matches
175
- endId();
176
- endTag();
177
- endClass();
178
- };
179
-
180
- var endPart = function(){
181
- endAll();
182
- if(inPseudo >= 0){
183
- currentPart.pseudos.push({ name: ts(inPseudo + 1, x) });
184
- }
185
- // hint to the selector engine to tell it whether or not it
186
- // needs to do any iteration. Many simple selectors don't, and
187
- // we can avoid significant construction-time work by advising
188
- // the system to skip them
189
- currentPart.loops = (
190
- currentPart.pseudos.length ||
191
- currentPart.attrs.length ||
192
- currentPart.classes.length );
193
-
194
- currentPart.oquery = currentPart.query = ts(pStart, x); // save the full expression as a string
195
-
196
-
197
- // otag/tag are hints to suggest to the system whether or not
198
- // it's an operator or a tag. We save a copy of otag since the
199
- // tag name is cast to upper-case in regular HTML matches. The
200
- // system has a global switch to figure out if the current
201
- // expression needs to be case sensitive or not and it will use
202
- // otag or tag accordingly
203
- currentPart.otag = currentPart.tag = (currentPart["oper"]) ? null : (currentPart.tag || "*");
204
-
205
- if(currentPart.tag){
206
- // if we're in a case-insensitive HTML doc, we likely want
207
- // the toUpperCase when matching on element.tagName. If we
208
- // do it here, we can skip the string op per node
209
- // comparison
210
- currentPart.tag = currentPart.tag.toUpperCase();
211
- }
212
-
213
- // add the part to the list
214
- if(queryParts.length && (queryParts[queryParts.length-1].oper)){
215
- // operators are always infix, so we remove them from the
216
- // list and attach them to the next match. The evaluator is
217
- // responsible for sorting out how to handle them.
218
- currentPart.infixOper = queryParts.pop();
219
- currentPart.query = currentPart.infixOper.query + " " + currentPart.query;
220
- /*
221
- console.debug( "swapping out the infix",
222
- currentPart.infixOper,
223
- "and attaching it to",
224
- currentPart);
225
- */
226
- }
227
- queryParts.push(currentPart);
228
-
229
- currentPart = null;
230
- };
231
-
232
- // iterate over the query, character by character, building up a
233
- // list of query part objects
234
- for(; lc=cc, cc=query.charAt(x), x < ql; x++){
235
- // cc: the current character in the match
236
- // lc: the last character (if any)
237
-
238
- // someone is trying to escape something, so don't try to match any
239
- // fragments. We assume we're inside a literal.
240
- if(lc == "\\"){ continue; }
241
- if(!currentPart){ // a part was just ended or none has yet been created
242
- // NOTE: I hate all this alloc, but it's shorter than writing tons of if's
243
- pStart = x;
244
- // rules describe full CSS sub-expressions, like:
245
- // #someId
246
- // .className:first-child
247
- // but not:
248
- // thinger > div.howdy[type=thinger]
249
- // the indidual components of the previous query would be
250
- // split into 3 parts that would be represented a structure like:
251
- // [
252
- // {
253
- // query: "thinger",
254
- // tag: "thinger",
255
- // },
256
- // {
257
- // query: "div.howdy[type=thinger]",
258
- // classes: ["howdy"],
259
- // infixOper: {
260
- // query: ">",
261
- // oper: ">",
262
- // }
263
- // },
264
- // ]
265
- currentPart = {
266
- query: null, // the full text of the part's rule
267
- pseudos: [], // CSS supports multiple pseud-class matches in a single rule
268
- attrs: [], // CSS supports multi-attribute match, so we need an array
269
- classes: [], // class matches may be additive, e.g.: .thinger.blah.howdy
270
- tag: null, // only one tag...
271
- oper: null, // ...or operator per component. Note that these wind up being exclusive.
272
- id: null, // the id component of a rule
273
- getTag: function(){
274
- return caseSensitive ? this.otag : this.tag;
275
- }
276
- };
277
-
278
- // if we don't have a part, we assume we're going to start at
279
- // the beginning of a match, which should be a tag name. This
280
- // might fault a little later on, but we detect that and this
281
- // iteration will still be fine.
282
- inTag = x;
283
- }
284
-
285
- // Skip processing all quoted characters.
286
- // If we are inside quoted text then currentQuoteChar stores the character that began the quote,
287
- // thus that character that will end it.
288
- if(currentQuoteChar){
289
- if(cc == currentQuoteChar){
290
- currentQuoteChar = null;
291
- }
292
- continue;
293
- }else if (cc == "'" || cc == '"'){
294
- currentQuoteChar = cc;
295
- continue;
296
- }
297
-
298
- if(inBrackets >= 0){
299
- // look for a the close first
300
- if(cc == "]"){ // if we're in a [...] clause and we end, do assignment
301
- if(!_cp.attr){
302
- // no attribute match was previously begun, so we
303
- // assume this is an attribute existence match in the
304
- // form of [someAttributeName]
305
- _cp.attr = ts(inBrackets+1, x);
306
- }else{
307
- // we had an attribute already, so we know that we're
308
- // matching some sort of value, as in [attrName=howdy]
309
- _cp.matchFor = ts((inMatchFor||inBrackets+1), x);
310
- }
311
- var cmf = _cp.matchFor;
312
- if(cmf){
313
- // try to strip quotes from the matchFor value. We want
314
- // [attrName=howdy] to match the same
315
- // as [attrName = 'howdy' ]
316
- if( (cmf.charAt(0) == '"') || (cmf.charAt(0) == "'") ){
317
- _cp.matchFor = cmf.slice(1, -1);
318
- }
319
- }
320
- // remove backslash escapes from an attribute match, since DOM
321
- // querying will get attribute values without backslashes
322
- if(_cp.matchFor){
323
- _cp.matchFor = _cp.matchFor.replace(/\\/g, "");
324
- }
325
-
326
- // end the attribute by adding it to the list of attributes.
327
- currentPart.attrs.push(_cp);
328
- _cp = null; // necessary?
329
- inBrackets = inMatchFor = -1;
330
- }else if(cc == "="){
331
- // if the last char was an operator prefix, make sure we
332
- // record it along with the "=" operator.
333
- var addToCc = ("|~^$*".indexOf(lc) >=0 ) ? lc : "";
334
- _cp.type = addToCc+cc;
335
- _cp.attr = ts(inBrackets+1, x-addToCc.length);
336
- inMatchFor = x+1;
337
- }
338
- // now look for other clause parts
339
- }else if(inParens >= 0){
340
- // if we're in a parenthetical expression, we need to figure
341
- // out if it's attached to a pseudo-selector rule like
342
- // :nth-child(1)
343
- if(cc == ")"){
344
- if(inPseudo >= 0){
345
- _cp.value = ts(inParens+1, x);
346
- }
347
- inPseudo = inParens = -1;
348
- }
349
- }else if(cc == "#"){
350
- // start of an ID match
351
- endAll();
352
- inId = x+1;
353
- }else if(cc == "."){
354
- // start of a class match
355
- endAll();
356
- inClass = x;
357
- }else if(cc == ":"){
358
- // start of a pseudo-selector match
359
- endAll();
360
- inPseudo = x;
361
- }else if(cc == "["){
362
- // start of an attribute match.
363
- endAll();
364
- inBrackets = x;
365
- // provide a new structure for the attribute match to fill-in
366
- _cp = {
367
- /*=====
368
- attr: null, type: null, matchFor: null
369
- =====*/
370
- };
371
- }else if(cc == "("){
372
- // we really only care if we've entered a parenthetical
373
- // expression if we're already inside a pseudo-selector match
374
- if(inPseudo >= 0){
375
- // provide a new structure for the pseudo match to fill-in
376
- _cp = {
377
- name: ts(inPseudo+1, x),
378
- value: null
379
- };
380
- currentPart.pseudos.push(_cp);
381
- }
382
- inParens = x;
383
- }else if(
384
- (cc == " ") &&
385
- // if it's a space char and the last char is too, consume the
386
- // current one without doing more work
387
- (lc != cc)
388
- ){
389
- endPart();
390
- }
391
- }
392
- return queryParts;
393
- };
394
-
395
-
396
- ////////////////////////////////////////////////////////////////////////
397
- // DOM query infrastructure
398
- ////////////////////////////////////////////////////////////////////////
399
-
400
- var agree = function(first, second){
401
- // the basic building block of the yes/no chaining system. agree(f1,
402
- // f2) generates a new function which returns the boolean results of
403
- // both of the passed functions to a single logical-anded result. If
404
- // either are not passed, the other is used exclusively.
405
- if(!first){ return second; }
406
- if(!second){ return first; }
407
-
408
- return function(){
409
- return first.apply(window, arguments) && second.apply(window, arguments);
410
- };
411
- };
412
-
413
- var getArr = function(i, arr){
414
- // helps us avoid array alloc when we don't need it
415
- var r = arr||[]; // FIXME: should this be 'new d._NodeListCtor()' ?
416
- if(i){ r.push(i); }
417
- return r;
418
- };
419
-
420
- var _isElement = function(n){ return (1 == n.nodeType); };
421
-
422
- // FIXME: need to coalesce _getAttr with defaultGetter
423
- var blank = "";
424
- var _getAttr = function(elem, attr){
425
- if(!elem){ return blank; }
426
- if(attr == "class"){
427
- return elem.className || blank;
428
- }
429
- if(attr == "for"){
430
- return elem.htmlFor || blank;
431
- }
432
- if(attr == "style"){
433
- return elem.style.cssText || blank;
434
- }
435
- return (caseSensitive ? elem.getAttribute(attr) : elem.getAttribute(attr, 2)) || blank;
436
- };
437
-
438
- var attrs = {
439
- "*=": function(attr, value){
440
- return function(elem){
441
- // E[foo*="bar"]
442
- // an E element whose "foo" attribute value contains
443
- // the substring "bar"
444
- return (_getAttr(elem, attr).indexOf(value)>=0);
445
- };
446
- },
447
- "^=": function(attr, value){
448
- // E[foo^="bar"]
449
- // an E element whose "foo" attribute value begins exactly
450
- // with the string "bar"
451
- return function(elem){
452
- return (_getAttr(elem, attr).indexOf(value)==0);
453
- };
454
- },
455
- "$=": function(attr, value){
456
- // E[foo$="bar"]
457
- // an E element whose "foo" attribute value ends exactly
458
- // with the string "bar"
459
- return function(elem){
460
- var ea = " "+_getAttr(elem, attr);
461
- var lastIndex = ea.lastIndexOf(value);
462
- return lastIndex > -1 && (lastIndex==(ea.length-value.length));
463
- };
464
- },
465
- "~=": function(attr, value){
466
- // E[foo~="bar"]
467
- // an E element whose "foo" attribute value is a list of
468
- // space-separated values, one of which is exactly equal
469
- // to "bar"
470
-
471
- // return "[contains(concat(' ',@"+attr+",' '), ' "+ value +" ')]";
472
- var tval = " "+value+" ";
473
- return function(elem){
474
- var ea = " "+_getAttr(elem, attr)+" ";
475
- return (ea.indexOf(tval)>=0);
476
- };
477
- },
478
- "|=": function(attr, value){
479
- // E[hreflang|="en"]
480
- // an E element whose "hreflang" attribute has a
481
- // hyphen-separated list of values beginning (from the
482
- // left) with "en"
483
- var valueDash = value+"-";
484
- return function(elem){
485
- var ea = _getAttr(elem, attr);
486
- return (
487
- (ea == value) ||
488
- (ea.indexOf(valueDash)==0)
489
- );
490
- };
491
- },
492
- "=": function(attr, value){
493
- return function(elem){
494
- return (_getAttr(elem, attr) == value);
495
- };
496
- }
497
- };
498
-
499
- // avoid testing for node type if we can. Defining this in the negative
500
- // here to avoid negation in the fast path.
501
- var _noNES = (typeof getDoc().firstChild.nextElementSibling == "undefined");
502
- var _ns = !_noNES ? "nextElementSibling" : "nextSibling";
503
- var _ps = !_noNES ? "previousElementSibling" : "previousSibling";
504
- var _simpleNodeTest = (_noNES ? _isElement : yesman);
505
-
506
- var _lookLeft = function(node){
507
- // look left
508
- while(node = node[_ps]){
509
- if(_simpleNodeTest(node)){ return false; }
510
- }
511
- return true;
512
- };
513
-
514
- var _lookRight = function(node){
515
- // look right
516
- while(node = node[_ns]){
517
- if(_simpleNodeTest(node)){ return false; }
518
- }
519
- return true;
520
- };
521
-
522
- var getNodeIndex = function(node){
523
- var root = node.parentNode;
524
- root = root.nodeType != 7 ? root : root.nextSibling; // PROCESSING_INSTRUCTION_NODE
525
- var i = 0,
526
- tret = root.children || root.childNodes,
527
- ci = (node["_i"]||node.getAttribute("_i")||-1),
528
- cl = (root["_l"]|| (typeof root.getAttribute !== "undefined" ? root.getAttribute("_l") : -1));
529
-
530
- if(!tret){ return -1; }
531
- var l = tret.length;
532
-
533
- // we calculate the parent length as a cheap way to invalidate the
534
- // cache. It's not 100% accurate, but it's much more honest than what
535
- // other libraries do
536
- if( cl == l && ci >= 0 && cl >= 0 ){
537
- // if it's legit, tag and release
538
- return ci;
539
- }
540
-
541
- // else re-key things
542
- if(has("ie") && typeof root.setAttribute !== "undefined"){
543
- root.setAttribute("_l", l);
544
- }else{
545
- root["_l"] = l;
546
- }
547
- ci = -1;
548
- for(var te = root["firstElementChild"]||root["firstChild"]; te; te = te[_ns]){
549
- if(_simpleNodeTest(te)){
550
- if(has("ie")){
551
- te.setAttribute("_i", ++i);
552
- }else{
553
- te["_i"] = ++i;
554
- }
555
- if(node === te){
556
- // NOTE:
557
- // shortcutting the return at this step in indexing works
558
- // very well for benchmarking but we avoid it here since
559
- // it leads to potential O(n^2) behavior in sequential
560
- // getNodexIndex operations on a previously un-indexed
561
- // parent. We may revisit this at a later time, but for
562
- // now we just want to get the right answer more often
563
- // than not.
564
- ci = i;
565
- }
566
- }
567
- }
568
- return ci;
569
- };
570
-
571
- var isEven = function(elem){
572
- return !((getNodeIndex(elem)) % 2);
573
- };
574
-
575
- var isOdd = function(elem){
576
- return ((getNodeIndex(elem)) % 2);
577
- };
578
-
579
- var pseudos = {
580
- "checked": function(name, condition){
581
- return function(elem){
582
- return !!("checked" in elem ? elem.checked : elem.selected);
583
- };
584
- },
585
- "disabled": function(name, condition){
586
- return function(elem){
587
- return elem.disabled;
588
- };
589
- },
590
- "enabled": function(name, condition){
591
- return function(elem){
592
- return !elem.disabled;
593
- };
594
- },
595
- "first-child": function(){ return _lookLeft; },
596
- "last-child": function(){ return _lookRight; },
597
- "only-child": function(name, condition){
598
- return function(node){
599
- return _lookLeft(node) && _lookRight(node);
600
- };
601
- },
602
- "empty": function(name, condition){
603
- return function(elem){
604
- // DomQuery and jQuery get this wrong, oddly enough.
605
- // The CSS 3 selectors spec is pretty explicit about it, too.
606
- var cn = elem.childNodes;
607
- var cnl = elem.childNodes.length;
608
- // if(!cnl){ return true; }
609
- for(var x=cnl-1; x >= 0; x--){
610
- var nt = cn[x].nodeType;
611
- if((nt === 1)||(nt == 3)){ return false; }
612
- }
613
- return true;
614
- };
615
- },
616
- "contains": function(name, condition){
617
- var cz = condition.charAt(0);
618
- if( cz == '"' || cz == "'" ){ //remove quote
619
- condition = condition.slice(1, -1);
620
- }
621
- return function(elem){
622
- return (elem.innerHTML.indexOf(condition) >= 0);
623
- };
624
- },
625
- "not": function(name, condition){
626
- var p = getQueryParts(condition)[0];
627
- var ignores = { el: 1 };
628
- if(p.tag != "*"){
629
- ignores.tag = 1;
630
- }
631
- if(!p.classes.length){
632
- ignores.classes = 1;
633
- }
634
- var ntf = getSimpleFilterFunc(p, ignores);
635
- return function(elem){
636
- return (!ntf(elem));
637
- };
638
- },
639
- "nth-child": function(name, condition){
640
- var pi = parseInt;
641
- // avoid re-defining function objects if we can
642
- if(condition == "odd"){
643
- return isOdd;
644
- }else if(condition == "even"){
645
- return isEven;
646
- }
647
- // FIXME: can we shorten this?
648
- if(condition.indexOf("n") != -1){
649
- var tparts = condition.split("n", 2);
650
- var pred = tparts[0] ? ((tparts[0] == '-') ? -1 : pi(tparts[0])) : 1;
651
- var idx = tparts[1] ? pi(tparts[1]) : 0;
652
- var lb = 0, ub = -1;
653
- if(pred > 0){
654
- if(idx < 0){
655
- idx = (idx % pred) && (pred + (idx % pred));
656
- }else if(idx>0){
657
- if(idx >= pred){
658
- lb = idx - idx % pred;
659
- }
660
- idx = idx % pred;
661
- }
662
- }else if(pred<0){
663
- pred *= -1;
664
- // idx has to be greater than 0 when pred is negative;
665
- // shall we throw an error here?
666
- if(idx > 0){
667
- ub = idx;
668
- idx = idx % pred;
669
- }
670
- }
671
- if(pred > 0){
672
- return function(elem){
673
- var i = getNodeIndex(elem);
674
- return (i>=lb) && (ub<0 || i<=ub) && ((i % pred) == idx);
675
- };
676
- }else{
677
- condition = idx;
678
- }
679
- }
680
- var ncount = pi(condition);
681
- return function(elem){
682
- return (getNodeIndex(elem) == ncount);
683
- };
684
- }
685
- };
686
-
687
- var defaultGetter = (has("ie") && (has("ie") < 9 || has("quirks"))) ? function(cond){
688
- var clc = cond.toLowerCase();
689
- if(clc == "class"){ cond = "className"; }
690
- return function(elem){
691
- return (caseSensitive ? elem.getAttribute(cond) : elem[cond]||elem[clc]);
692
- };
693
- } : function(cond){
694
- return function(elem){
695
- return (elem && elem.getAttribute && elem.hasAttribute(cond));
696
- };
697
- };
698
-
699
- var getSimpleFilterFunc = function(query, ignores){
700
- // generates a node tester function based on the passed query part. The
701
- // query part is one of the structures generated by the query parser
702
- // when it creates the query AST. The "ignores" object specifies which
703
- // (if any) tests to skip, allowing the system to avoid duplicating
704
- // work where it may have already been taken into account by other
705
- // factors such as how the nodes to test were fetched in the first
706
- // place
707
- if(!query){ return yesman; }
708
- ignores = ignores||{};
709
-
710
- var ff = null;
711
-
712
- if(!("el" in ignores)){
713
- ff = agree(ff, _isElement);
714
- }
715
-
716
- if(!("tag" in ignores)){
717
- if(query.tag != "*"){
718
- ff = agree(ff, function(elem){
719
- return (elem && ((caseSensitive ? elem.tagName : elem.tagName.toUpperCase()) == query.getTag()));
720
- });
721
- }
722
- }
723
-
724
- if(!("classes" in ignores)){
725
- each(query.classes, function(cname, idx, arr){
726
- // get the class name
727
- /*
728
- var isWildcard = cname.charAt(cname.length-1) == "*";
729
- if(isWildcard){
730
- cname = cname.substr(0, cname.length-1);
731
- }
732
- // I dislike the regex thing, even if memoized in a cache, but it's VERY short
733
- var re = new RegExp("(?:^|\\s)" + cname + (isWildcard ? ".*" : "") + "(?:\\s|$)");
734
- */
735
- var re = new RegExp("(?:^|\\s)" + cname + "(?:\\s|$)");
736
- ff = agree(ff, function(elem){
737
- return re.test(elem.className);
738
- });
739
- ff.count = idx;
740
- });
741
- }
742
-
743
- if(!("pseudos" in ignores)){
744
- each(query.pseudos, function(pseudo){
745
- var pn = pseudo.name;
746
- if(pseudos[pn]){
747
- ff = agree(ff, pseudos[pn](pn, pseudo.value));
748
- }
749
- });
750
- }
751
-
752
- if(!("attrs" in ignores)){
753
- each(query.attrs, function(attr){
754
- var matcher;
755
- var a = attr.attr;
756
- // type, attr, matchFor
757
- if(attr.type && attrs[attr.type]){
758
- matcher = attrs[attr.type](a, attr.matchFor);
759
- }else if(a.length){
760
- matcher = defaultGetter(a);
761
- }
762
- if(matcher){
763
- ff = agree(ff, matcher);
764
- }
765
- });
766
- }
767
-
768
- if(!("id" in ignores)){
769
- if(query.id){
770
- ff = agree(ff, function(elem){
771
- return (!!elem && (elem.id == query.id));
772
- });
773
- }
774
- }
775
-
776
- if(!ff){
777
- if(!("default" in ignores)){
778
- ff = yesman;
779
- }
780
- }
781
- return ff;
782
- };
783
-
784
- var _nextSibling = function(filterFunc){
785
- return function(node, ret, bag){
786
- while(node = node[_ns]){
787
- if(_noNES && (!_isElement(node))){ continue; }
788
- if(
789
- (!bag || _isUnique(node, bag)) &&
790
- filterFunc(node)
791
- ){
792
- ret.push(node);
793
- }
794
- break;
795
- }
796
- return ret;
797
- };
798
- };
799
-
800
- var _nextSiblings = function(filterFunc){
801
- return function(root, ret, bag){
802
- var te = root[_ns];
803
- while(te){
804
- if(_simpleNodeTest(te)){
805
- if(bag && !_isUnique(te, bag)){
806
- break;
807
- }
808
- if(filterFunc(te)){
809
- ret.push(te);
810
- }
811
- }
812
- te = te[_ns];
813
- }
814
- return ret;
815
- };
816
- };
817
-
818
- // get an array of child *elements*, skipping text and comment nodes
819
- var _childElements = function(filterFunc){
820
- filterFunc = filterFunc||yesman;
821
- return function(root, ret, bag){
822
- // get an array of child elements, skipping text and comment nodes
823
- var te, x = 0, tret = root.children || root.childNodes;
824
- while(te = tret[x++]){
825
- if(
826
- _simpleNodeTest(te) &&
827
- (!bag || _isUnique(te, bag)) &&
828
- (filterFunc(te, x))
829
- ){
830
- ret.push(te);
831
- }
832
- }
833
- return ret;
834
- };
835
- };
836
-
837
- // test to see if node is below root
838
- var _isDescendant = function(node, root){
839
- var pn = node.parentNode;
840
- while(pn){
841
- if(pn == root){
842
- break;
843
- }
844
- pn = pn.parentNode;
845
- }
846
- return !!pn;
847
- };
848
-
849
- var _getElementsFuncCache = {};
850
-
851
- var getElementsFunc = function(query){
852
- var retFunc = _getElementsFuncCache[query.query];
853
- // if we've got a cached dispatcher, just use that
854
- if(retFunc){ return retFunc; }
855
- // else, generate a new on
856
-
857
- // NOTE:
858
- // this function returns a function that searches for nodes and
859
- // filters them. The search may be specialized by infix operators
860
- // (">", "~", or "+") else it will default to searching all
861
- // descendants (the " " selector). Once a group of children is
862
- // found, a test function is applied to weed out the ones we
863
- // don't want. Many common cases can be fast-pathed. We spend a
864
- // lot of cycles to create a dispatcher that doesn't do more work
865
- // than necessary at any point since, unlike this function, the
866
- // dispatchers will be called every time. The logic of generating
867
- // efficient dispatchers looks like this in pseudo code:
868
- //
869
- // # if it's a purely descendant query (no ">", "+", or "~" modifiers)
870
- // if infixOperator == " ":
871
- // if only(id):
872
- // return def(root):
873
- // return d.byId(id, root);
874
- //
875
- // elif id:
876
- // return def(root):
877
- // return filter(d.byId(id, root));
878
- //
879
- // elif cssClass && getElementsByClassName:
880
- // return def(root):
881
- // return filter(root.getElementsByClassName(cssClass));
882
- //
883
- // elif only(tag):
884
- // return def(root):
885
- // return root.getElementsByTagName(tagName);
886
- //
887
- // else:
888
- // # search by tag name, then filter
889
- // return def(root):
890
- // return filter(root.getElementsByTagName(tagName||"*"));
891
- //
892
- // elif infixOperator == ">":
893
- // # search direct children
894
- // return def(root):
895
- // return filter(root.children);
896
- //
897
- // elif infixOperator == "+":
898
- // # search next sibling
899
- // return def(root):
900
- // return filter(root.nextElementSibling);
901
- //
902
- // elif infixOperator == "~":
903
- // # search rightward siblings
904
- // return def(root):
905
- // return filter(nextSiblings(root));
906
-
907
- var io = query.infixOper;
908
- var oper = (io ? io.oper : "");
909
- // the default filter func which tests for all conditions in the query
910
- // part. This is potentially inefficient, so some optimized paths may
911
- // re-define it to test fewer things.
912
- var filterFunc = getSimpleFilterFunc(query, { el: 1 });
913
- var qt = query.tag;
914
- var wildcardTag = ("*" == qt);
915
- var ecs = getDoc()["getElementsByClassName"];
916
-
917
- if(!oper){
918
- // if there's no infix operator, then it's a descendant query. ID
919
- // and "elements by class name" variants can be accelerated so we
920
- // call them out explicitly:
921
- if(query.id){
922
- // testing shows that the overhead of yesman() is acceptable
923
- // and can save us some bytes vs. re-defining the function
924
- // everywhere.
925
- filterFunc = (!query.loops && wildcardTag) ?
926
- yesman :
927
- getSimpleFilterFunc(query, { el: 1, id: 1 });
928
-
929
- retFunc = function(root, arr){
930
- var te = dom.byId(query.id, (root.ownerDocument||root));
931
- if(!te || !filterFunc(te)){ return; }
932
- if(9 == root.nodeType){ // if root's a doc, we just return directly
933
- return getArr(te, arr);
934
- }else{ // otherwise check ancestry
935
- if(_isDescendant(te, root)){
936
- return getArr(te, arr);
937
- }
938
- }
939
- };
940
- }else if(
941
- ecs &&
942
- // isAlien check. Workaround for Prototype.js being totally evil/dumb.
943
- /\{\s*\[native code\]\s*\}/.test(String(ecs)) &&
944
- query.classes.length &&
945
- !cssCaseBug
946
- ){
947
- // it's a class-based query and we've got a fast way to run it.
948
-
949
- // ignore class and ID filters since we will have handled both
950
- filterFunc = getSimpleFilterFunc(query, { el: 1, classes: 1, id: 1 });
951
- var classesString = query.classes.join(" ");
952
- retFunc = function(root, arr, bag){
953
- var ret = getArr(0, arr), te, x=0;
954
- var tret = root.getElementsByClassName(classesString);
955
- while((te = tret[x++])){
956
- if(filterFunc(te, root) && _isUnique(te, bag)){
957
- ret.push(te);
958
- }
959
- }
960
- return ret;
961
- };
962
-
963
- }else if(!wildcardTag && !query.loops){
964
- // it's tag only. Fast-path it.
965
- retFunc = function(root, arr, bag){
966
- var ret = getArr(0, arr), te, x=0;
967
- var tag = query.getTag(),
968
- tret = tag ? root.getElementsByTagName(tag) : [];
969
- while((te = tret[x++])){
970
- if(_isUnique(te, bag)){
971
- ret.push(te);
972
- }
973
- }
974
- return ret;
975
- };
976
- }else{
977
- // the common case:
978
- // a descendant selector without a fast path. By now it's got
979
- // to have a tag selector, even if it's just "*" so we query
980
- // by that and filter
981
- filterFunc = getSimpleFilterFunc(query, { el: 1, tag: 1, id: 1 });
982
- retFunc = function(root, arr, bag){
983
- var ret = getArr(0, arr), te, x=0;
984
- // we use getTag() to avoid case sensitivity issues
985
- var tag = query.getTag(),
986
- tret = tag ? root.getElementsByTagName(tag) : [];
987
- while((te = tret[x++])){
988
- if(filterFunc(te, root) && _isUnique(te, bag)){
989
- ret.push(te);
990
- }
991
- }
992
- return ret;
993
- };
994
- }
995
- }else{
996
- // the query is scoped in some way. Instead of querying by tag we
997
- // use some other collection to find candidate nodes
998
- var skipFilters = { el: 1 };
999
- if(wildcardTag){
1000
- skipFilters.tag = 1;
1001
- }
1002
- filterFunc = getSimpleFilterFunc(query, skipFilters);
1003
- if("+" == oper){
1004
- retFunc = _nextSibling(filterFunc);
1005
- }else if("~" == oper){
1006
- retFunc = _nextSiblings(filterFunc);
1007
- }else if(">" == oper){
1008
- retFunc = _childElements(filterFunc);
1009
- }
1010
- }
1011
- // cache it and return
1012
- return _getElementsFuncCache[query.query] = retFunc;
1013
- };
1014
-
1015
- var filterDown = function(root, queryParts){
1016
- // NOTE:
1017
- // this is the guts of the DOM query system. It takes a list of
1018
- // parsed query parts and a root and finds children which match
1019
- // the selector represented by the parts
1020
- var candidates = getArr(root), qp, x, te, qpl = queryParts.length, bag, ret;
1021
-
1022
- for(var i = 0; i < qpl; i++){
1023
- ret = [];
1024
- qp = queryParts[i];
1025
- x = candidates.length - 1;
1026
- if(x > 0){
1027
- // if we have more than one root at this level, provide a new
1028
- // hash to use for checking group membership but tell the
1029
- // system not to post-filter us since we will already have been
1030
- // guaranteed to be unique
1031
- bag = {};
1032
- ret.nozip = true;
1033
- }
1034
- var gef = getElementsFunc(qp);
1035
- for(var j = 0; (te = candidates[j]); j++){
1036
- // for every root, get the elements that match the descendant
1037
- // selector, adding them to the "ret" array and filtering them
1038
- // via membership in this level's bag. If there are more query
1039
- // parts, then this level's return will be used as the next
1040
- // level's candidates
1041
- gef(te, ret, bag);
1042
- }
1043
- if(!ret.length){ break; }
1044
- candidates = ret;
1045
- }
1046
- return ret;
1047
- };
1048
-
1049
- ////////////////////////////////////////////////////////////////////////
1050
- // the query runner
1051
- ////////////////////////////////////////////////////////////////////////
1052
-
1053
- // these are the primary caches for full-query results. The query
1054
- // dispatcher functions are generated then stored here for hash lookup in
1055
- // the future
1056
- var _queryFuncCacheDOM = {},
1057
- _queryFuncCacheQSA = {};
1058
-
1059
- // this is the second level of splitting, from full-length queries (e.g.,
1060
- // "div.foo .bar") into simple query expressions (e.g., ["div.foo",
1061
- // ".bar"])
1062
- var getStepQueryFunc = function(query){
1063
- var qparts = getQueryParts(trim(query));
1064
-
1065
- // if it's trivial, avoid iteration and zipping costs
1066
- if(qparts.length == 1){
1067
- // we optimize this case here to prevent dispatch further down the
1068
- // chain, potentially slowing things down. We could more elegantly
1069
- // handle this in filterDown(), but it's slower for simple things
1070
- // that need to be fast (e.g., "#someId").
1071
- var tef = getElementsFunc(qparts[0]);
1072
- return function(root){
1073
- var r = tef(root, []);
1074
- if(r){ r.nozip = true; }
1075
- return r;
1076
- };
1077
- }
1078
-
1079
- // otherwise, break it up and return a runner that iterates over the parts recursively
1080
- return function(root){
1081
- return filterDown(root, qparts);
1082
- };
1083
- };
1084
-
1085
- // NOTES:
1086
- // * we can't trust QSA for anything but document-rooted queries, so
1087
- // caching is split into DOM query evaluators and QSA query evaluators
1088
- // * caching query results is dirty and leak-prone (or, at a minimum,
1089
- // prone to unbounded growth). Other toolkits may go this route, but
1090
- // they totally destroy their own ability to manage their memory
1091
- // footprint. If we implement it, it should only ever be with a fixed
1092
- // total element reference # limit and an LRU-style algorithm since JS
1093
- // has no weakref support. Caching compiled query evaluators is also
1094
- // potentially problematic, but even on large documents the size of the
1095
- // query evaluators is often < 100 function objects per evaluator (and
1096
- // LRU can be applied if it's ever shown to be an issue).
1097
- // * since IE's QSA support is currently only for HTML documents and even
1098
- // then only in IE 8's "standards mode", we have to detect our dispatch
1099
- // route at query time and keep 2 separate caches. Ugg.
1100
-
1101
- // we need to determine if we think we can run a given query via
1102
- // querySelectorAll or if we'll need to fall back on DOM queries to get
1103
- // there. We need a lot of information about the environment and the query
1104
- // to make the determination (e.g. does it support QSA, does the query in
1105
- // question work in the native QSA impl, etc.).
1106
-
1107
- // IE QSA queries may incorrectly include comment nodes, so we throw the
1108
- // zipping function into "remove" comments mode instead of the normal "skip
1109
- // it" which every other QSA-clued browser enjoys
1110
- var noZip = has("ie") ? "commentStrip" : "nozip";
1111
-
1112
- var qsa = "querySelectorAll";
1113
- var qsaAvail = !!getDoc()[qsa];
1114
-
1115
- //Don't bother with n+3 type of matches, IE complains if we modify those.
1116
- var infixSpaceRe = /\\[>~+]|n\+\d|([^ \\])?([>~+])([^ =])?/g;
1117
- var infixSpaceFunc = function(match, pre, ch, post){
1118
- return ch ? (pre ? pre + " " : "") + ch + (post ? " " + post : "") : /*n+3*/ match;
1119
- };
1120
-
1121
- //Don't apply the infixSpaceRe to attribute value selectors
1122
- var attRe = /([^[]*)([^\]]*])?/g;
1123
- var attFunc = function(match, nonAtt, att){
1124
- return nonAtt.replace(infixSpaceRe, infixSpaceFunc) + (att||"");
1125
- };
1126
- var getQueryFunc = function(query, forceDOM){
1127
- //Normalize query. The CSS3 selectors spec allows for omitting spaces around
1128
- //infix operators, >, ~ and +
1129
- //Do the work here since detection for spaces is used as a simple "not use QSA"
1130
- //test below.
1131
- query = query.replace(attRe, attFunc);
1132
-
1133
- if(qsaAvail){
1134
- // if we've got a cached variant and we think we can do it, run it!
1135
- var qsaCached = _queryFuncCacheQSA[query];
1136
- if(qsaCached && !forceDOM){ return qsaCached; }
1137
- }
1138
-
1139
- // else if we've got a DOM cached variant, assume that we already know
1140
- // all we need to and use it
1141
- var domCached = _queryFuncCacheDOM[query];
1142
- if(domCached){ return domCached; }
1143
-
1144
- // TODO:
1145
- // today we're caching DOM and QSA branches separately so we
1146
- // recalc useQSA every time. If we had a way to tag root+query
1147
- // efficiently, we'd be in good shape to do a global cache.
1148
-
1149
- var qcz = query.charAt(0);
1150
- var nospace = (-1 == query.indexOf(" "));
1151
-
1152
- // byId searches are wicked fast compared to QSA, even when filtering
1153
- // is required
1154
- if( (query.indexOf("#") >= 0) && (nospace) ){
1155
- forceDOM = true;
1156
- }
1157
-
1158
- var useQSA = (
1159
- qsaAvail && (!forceDOM) &&
1160
- // as per CSS 3, we can't currently start w/ combinator:
1161
- // http://www.w3.org/TR/css3-selectors/#w3cselgrammar
1162
- (specials.indexOf(qcz) == -1) &&
1163
- // IE's QSA impl sucks on pseudos
1164
- (!has("ie") || (query.indexOf(":") == -1)) &&
1165
-
1166
- (!(cssCaseBug && (query.indexOf(".") >= 0))) &&
1167
-
1168
- // FIXME:
1169
- // need to tighten up browser rules on ":contains" and "|=" to
1170
- // figure out which aren't good
1171
- // Latest webkit (around 531.21.8) does not seem to do well with :checked on option
1172
- // elements, even though according to spec, selected options should
1173
- // match :checked. So go nonQSA for it:
1174
- // http://bugs.dojotoolkit.org/ticket/5179
1175
- (query.indexOf(":contains") == -1) && (query.indexOf(":checked") == -1) &&
1176
- (query.indexOf("|=") == -1) // some browsers don't grok it
1177
- );
1178
-
1179
- // TODO:
1180
- // if we've got a descendant query (e.g., "> .thinger" instead of
1181
- // just ".thinger") in a QSA-able doc, but are passed a child as a
1182
- // root, it should be possible to give the item a synthetic ID and
1183
- // trivially rewrite the query to the form "#synid > .thinger" to
1184
- // use the QSA branch
1185
-
1186
-
1187
- if(useQSA){
1188
- var tq = (specials.indexOf(query.charAt(query.length-1)) >= 0) ?
1189
- (query + " *") : query;
1190
- return _queryFuncCacheQSA[query] = function(root){
1191
- try{
1192
- // the QSA system contains an egregious spec bug which
1193
- // limits us, effectively, to only running QSA queries over
1194
- // entire documents. See:
1195
- // http://ejohn.org/blog/thoughts-on-queryselectorall/
1196
- // despite this, we can also handle QSA runs on simple
1197
- // selectors, but we don't want detection to be expensive
1198
- // so we're just checking for the presence of a space char
1199
- // right now. Not elegant, but it's cheaper than running
1200
- // the query parser when we might not need to
1201
- if(!((9 == root.nodeType) || nospace)){ throw ""; }
1202
- var r = root[qsa](tq);
1203
- // skip expensive duplication checks and just wrap in a NodeList
1204
- r[noZip] = true;
1205
- return r;
1206
- }catch(e){
1207
- // else run the DOM branch on this query, ensuring that we
1208
- // default that way in the future
1209
- return getQueryFunc(query, true)(root);
1210
- }
1211
- };
1212
- }else{
1213
- // DOM branch
1214
- var parts = query.match(/([^\s,](?:"(?:\\.|[^"])+"|'(?:\\.|[^'])+'|[^,])*)/g);
1215
- return _queryFuncCacheDOM[query] = ((parts.length < 2) ?
1216
- // if not a compound query (e.g., ".foo, .bar"), cache and return a dispatcher
1217
- getStepQueryFunc(query) :
1218
- // if it *is* a complex query, break it up into its
1219
- // constituent parts and return a dispatcher that will
1220
- // merge the parts when run
1221
- function(root){
1222
- var pindex = 0, // avoid array alloc for every invocation
1223
- ret = [],
1224
- tp;
1225
- while((tp = parts[pindex++])){
1226
- ret = ret.concat(getStepQueryFunc(tp)(root));
1227
- }
1228
- return ret;
1229
- }
1230
- );
1231
- }
1232
- };
1233
-
1234
- var _zipIdx = 0;
1235
-
1236
- // NOTE:
1237
- // this function is Moo inspired, but our own impl to deal correctly
1238
- // with XML in IE
1239
- var _nodeUID = has("ie") ? function(node){
1240
- if(caseSensitive){
1241
- // XML docs don't have uniqueID on their nodes
1242
- return (node.getAttribute("_uid") || node.setAttribute("_uid", ++_zipIdx) || _zipIdx);
1243
-
1244
- }else{
1245
- return node.uniqueID;
1246
- }
1247
- } :
1248
- function(node){
1249
- return (node._uid || (node._uid = ++_zipIdx));
1250
- };
1251
-
1252
- // determine if a node in is unique in a "bag". In this case we don't want
1253
- // to flatten a list of unique items, but rather just tell if the item in
1254
- // question is already in the bag. Normally we'd just use hash lookup to do
1255
- // this for us but IE's DOM is busted so we can't really count on that. On
1256
- // the upside, it gives us a built in unique ID function.
1257
- var _isUnique = function(node, bag){
1258
- if(!bag){ return 1; }
1259
- var id = _nodeUID(node);
1260
- if(!bag[id]){ return bag[id] = 1; }
1261
- return 0;
1262
- };
1263
-
1264
- // attempt to efficiently determine if an item in a list is a dupe,
1265
- // returning a list of "uniques", hopefully in document order
1266
- var _zipIdxName = "_zipIdx";
1267
- var _zip = function(arr){
1268
- if(arr && arr.nozip){
1269
- return arr;
1270
- }
1271
- var ret = [];
1272
- if(!arr || !arr.length){ return ret; }
1273
- if(arr[0]){
1274
- ret.push(arr[0]);
1275
- }
1276
- if(arr.length < 2){ return ret; }
1277
-
1278
- _zipIdx++;
1279
-
1280
- // we have to fork here for IE and XML docs because we can't set
1281
- // expandos on their nodes (apparently). *sigh*
1282
- var x, te;
1283
- if(has("ie") && caseSensitive){
1284
- var szidx = _zipIdx+"";
1285
- arr[0].setAttribute(_zipIdxName, szidx);
1286
- for(x = 1; te = arr[x]; x++){
1287
- if(arr[x].getAttribute(_zipIdxName) != szidx){
1288
- ret.push(te);
1289
- }
1290
- te.setAttribute(_zipIdxName, szidx);
1291
- }
1292
- }else if(has("ie") && arr.commentStrip){
1293
- try{
1294
- for(x = 1; te = arr[x]; x++){
1295
- if(_isElement(te)){
1296
- ret.push(te);
1297
- }
1298
- }
1299
- }catch(e){ /* squelch */ }
1300
- }else{
1301
- if(arr[0]){ arr[0][_zipIdxName] = _zipIdx; }
1302
- for(x = 1; te = arr[x]; x++){
1303
- if(arr[x][_zipIdxName] != _zipIdx){
1304
- ret.push(te);
1305
- }
1306
- te[_zipIdxName] = _zipIdx;
1307
- }
1308
- }
1309
- return ret;
1310
- };
1311
-
1312
- // the main executor
1313
- var query = function(/*String*/ query, /*String|DOMNode?*/ root){
1314
- // summary:
1315
- // Returns nodes which match the given CSS3 selector, searching the
1316
- // entire document by default but optionally taking a node to scope
1317
- // the search by. Returns an array.
1318
- // description:
1319
- // dojo.query() is the swiss army knife of DOM node manipulation in
1320
- // Dojo. Much like Prototype's "$$" (bling-bling) function or JQuery's
1321
- // "$" function, dojo.query provides robust, high-performance
1322
- // CSS-based node selector support with the option of scoping searches
1323
- // to a particular sub-tree of a document.
1324
- //
1325
- // Supported Selectors:
1326
- // --------------------
1327
- //
1328
- // acme supports a rich set of CSS3 selectors, including:
1329
- //
1330
- // - class selectors (e.g., `.foo`)
1331
- // - node type selectors like `span`
1332
- // - ` ` descendant selectors
1333
- // - `>` child element selectors
1334
- // - `#foo` style ID selectors
1335
- // - `*` universal selector
1336
- // - `~`, the preceded-by sibling selector
1337
- // - `+`, the immediately preceded-by sibling selector
1338
- // - attribute queries:
1339
- // - `[foo]` attribute presence selector
1340
- // - `[foo='bar']` attribute value exact match
1341
- // - `[foo~='bar']` attribute value list item match
1342
- // - `[foo^='bar']` attribute start match
1343
- // - `[foo$='bar']` attribute end match
1344
- // - `[foo*='bar']` attribute substring match
1345
- // - `:first-child`, `:last-child`, and `:only-child` positional selectors
1346
- // - `:empty` content emtpy selector
1347
- // - `:checked` pseudo selector
1348
- // - `:nth-child(n)`, `:nth-child(2n+1)` style positional calculations
1349
- // - `:nth-child(even)`, `:nth-child(odd)` positional selectors
1350
- // - `:not(...)` negation pseudo selectors
1351
- //
1352
- // Any legal combination of these selectors will work with
1353
- // `dojo.query()`, including compound selectors ("," delimited).
1354
- // Very complex and useful searches can be constructed with this
1355
- // palette of selectors and when combined with functions for
1356
- // manipulation presented by dojo/NodeList, many types of DOM
1357
- // manipulation operations become very straightforward.
1358
- //
1359
- // Unsupported Selectors:
1360
- // ----------------------
1361
- //
1362
- // While dojo.query handles many CSS3 selectors, some fall outside of
1363
- // what's reasonable for a programmatic node querying engine to
1364
- // handle. Currently unsupported selectors include:
1365
- //
1366
- // - namespace-differentiated selectors of any form
1367
- // - all `::` pseduo-element selectors
1368
- // - certain pseudo-selectors which don't get a lot of day-to-day use:
1369
- // - `:root`, `:lang()`, `:target`, `:focus`
1370
- // - all visual and state selectors:
1371
- // - `:root`, `:active`, `:hover`, `:visited`, `:link`,
1372
- // `:enabled`, `:disabled`
1373
- // - `:*-of-type` pseudo selectors
1374
- //
1375
- // dojo.query and XML Documents:
1376
- // -----------------------------
1377
- //
1378
- // `dojo.query` (as of dojo 1.2) supports searching XML documents
1379
- // in a case-sensitive manner. If an HTML document is served with
1380
- // a doctype that forces case-sensitivity (e.g., XHTML 1.1
1381
- // Strict), dojo.query() will detect this and "do the right
1382
- // thing". Case sensitivity is dependent upon the document being
1383
- // searched and not the query used. It is therefore possible to
1384
- // use case-sensitive queries on strict sub-documents (iframes,
1385
- // etc.) or XML documents while still assuming case-insensitivity
1386
- // for a host/root document.
1387
- //
1388
- // Non-selector Queries:
1389
- // ---------------------
1390
- //
1391
- // If something other than a String is passed for the query,
1392
- // `dojo.query` will return a new `dojo/NodeList` instance
1393
- // constructed from that parameter alone and all further
1394
- // processing will stop. This means that if you have a reference
1395
- // to a node or NodeList, you can quickly construct a new NodeList
1396
- // from the original by calling `dojo.query(node)` or
1397
- // `dojo.query(list)`.
1398
- //
1399
- // query:
1400
- // The CSS3 expression to match against. For details on the syntax of
1401
- // CSS3 selectors, see <http://www.w3.org/TR/css3-selectors/#selectors>
1402
- // root:
1403
- // A DOMNode (or node id) to scope the search from. Optional.
1404
- // returns: Array
1405
- // example:
1406
- // search the entire document for elements with the class "foo":
1407
- // | dojo.query(".foo");
1408
- // these elements will match:
1409
- // | <span class="foo"></span>
1410
- // | <span class="foo bar"></span>
1411
- // | <p class="thud foo"></p>
1412
- // example:
1413
- // search the entire document for elements with the classes "foo" *and* "bar":
1414
- // | dojo.query(".foo.bar");
1415
- // these elements will match:
1416
- // | <span class="foo bar"></span>
1417
- // while these will not:
1418
- // | <span class="foo"></span>
1419
- // | <p class="thud foo"></p>
1420
- // example:
1421
- // find `<span>` elements which are descendants of paragraphs and
1422
- // which have a "highlighted" class:
1423
- // | dojo.query("p span.highlighted");
1424
- // the innermost span in this fragment matches:
1425
- // | <p class="foo">
1426
- // | <span>...
1427
- // | <span class="highlighted foo bar">...</span>
1428
- // | </span>
1429
- // | </p>
1430
- // example:
1431
- // set an "odd" class on all odd table rows inside of the table
1432
- // `#tabular_data`, using the `>` (direct child) selector to avoid
1433
- // affecting any nested tables:
1434
- // | dojo.query("#tabular_data > tbody > tr:nth-child(odd)").addClass("odd");
1435
- // example:
1436
- // remove all elements with the class "error" from the document
1437
- // and store them in a list:
1438
- // | var errors = dojo.query(".error").orphan();
1439
- // example:
1440
- // add an onclick handler to every submit button in the document
1441
- // which causes the form to be sent via Ajax instead:
1442
- // | dojo.query("input[type='submit']").onclick(function(e){
1443
- // | dojo.stopEvent(e); // prevent sending the form
1444
- // | var btn = e.target;
1445
- // | dojo.xhrPost({
1446
- // | form: btn.form,
1447
- // | load: function(data){
1448
- // | // replace the form with the response
1449
- // | var div = dojo.doc.createElement("div");
1450
- // | dojo.place(div, btn.form, "after");
1451
- // | div.innerHTML = data;
1452
- // | dojo.style(btn.form, "display", "none");
1453
- // | }
1454
- // | });
1455
- // | });
1456
-
1457
- root = root || getDoc();
1458
-
1459
- // throw the big case sensitivity switch
1460
- var od = root.ownerDocument || root; // root is either Document or a node inside the document
1461
- caseSensitive = (od.createElement("div").tagName === "div");
1462
-
1463
- // NOTE:
1464
- // adding "true" as the 2nd argument to getQueryFunc is useful for
1465
- // testing the DOM branch without worrying about the
1466
- // behavior/performance of the QSA branch.
1467
- var r = getQueryFunc(query)(root);
1468
-
1469
- // FIXME:
1470
- // need to investigate this branch WRT #8074 and #8075
1471
- if(r && r.nozip){
1472
- return r;
1473
- }
1474
- return _zip(r); // dojo/NodeList
1475
- };
1476
- query.filter = function(/*Node[]*/ nodeList, /*String*/ filter, /*String|DOMNode?*/ root){
1477
- // summary:
1478
- // function for filtering a NodeList based on a selector, optimized for simple selectors
1479
- var tmpNodeList = [],
1480
- parts = getQueryParts(filter),
1481
- filterFunc =
1482
- (parts.length == 1 && !/[^\w#\.]/.test(filter)) ?
1483
- getSimpleFilterFunc(parts[0]) :
1484
- function(node){
1485
- return array.indexOf(query(filter, dom.byId(root)), node) != -1;
1486
- };
1487
- for(var x = 0, te; te = nodeList[x]; x++){
1488
- if(filterFunc(te)){ tmpNodeList.push(te); }
1489
- }
1490
- return tmpNodeList;
1491
- };
1492
- return query;
1493
- });