extjs-rails 4.1.0.alpha1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (517) hide show
  1. data/.gitignore +18 -0
  2. data/Gemfile +4 -0
  3. data/LICENSE +36 -0
  4. data/README.md +29 -0
  5. data/Rakefile +2 -0
  6. data/app/assets/javascripts/extjs-rails/extjs-rails.js +1 -0
  7. data/app/assets/javascripts/extjs-rails/index.js.erb +9 -0
  8. data/app/assets/javascripts/extjs-rails/sdk.jsb3 +2017 -0
  9. data/app/assets/javascripts/extjs-rails/src/AbstractComponent.js +3290 -0
  10. data/app/assets/javascripts/extjs-rails/src/AbstractManager.js +144 -0
  11. data/app/assets/javascripts/extjs-rails/src/AbstractPlugin.js +72 -0
  12. data/app/assets/javascripts/extjs-rails/src/Action.js +276 -0
  13. data/app/assets/javascripts/extjs-rails/src/Ajax.js +99 -0
  14. data/app/assets/javascripts/extjs-rails/src/Component.js +1344 -0
  15. data/app/assets/javascripts/extjs-rails/src/ComponentLoader.js +202 -0
  16. data/app/assets/javascripts/extjs-rails/src/ComponentManager.js +47 -0
  17. data/app/assets/javascripts/extjs-rails/src/ComponentQuery.js +521 -0
  18. data/app/assets/javascripts/extjs-rails/src/Editor.js +494 -0
  19. data/app/assets/javascripts/extjs-rails/src/ElementLoader.js +404 -0
  20. data/app/assets/javascripts/extjs-rails/src/FocusManager.js +712 -0
  21. data/app/assets/javascripts/extjs-rails/src/Img.js +111 -0
  22. data/app/assets/javascripts/extjs-rails/src/Layer.js +543 -0
  23. data/app/assets/javascripts/extjs-rails/src/LoadMask.js +432 -0
  24. data/app/assets/javascripts/extjs-rails/src/ModelManager.js +186 -0
  25. data/app/assets/javascripts/extjs-rails/src/PluginManager.js +110 -0
  26. data/app/assets/javascripts/extjs-rails/src/ProgressBar.js +336 -0
  27. data/app/assets/javascripts/extjs-rails/src/Shadow.js +233 -0
  28. data/app/assets/javascripts/extjs-rails/src/ShadowPool.js +43 -0
  29. data/app/assets/javascripts/extjs-rails/src/Template.js +331 -0
  30. data/app/assets/javascripts/extjs-rails/src/XTemplate.js +365 -0
  31. data/app/assets/javascripts/extjs-rails/src/XTemplateCompiler.js +450 -0
  32. data/app/assets/javascripts/extjs-rails/src/XTemplateParser.js +249 -0
  33. data/app/assets/javascripts/extjs-rails/src/ZIndexManager.js +519 -0
  34. data/app/assets/javascripts/extjs-rails/src/app/Application.js +271 -0
  35. data/app/assets/javascripts/extjs-rails/src/app/Controller.js +458 -0
  36. data/app/assets/javascripts/extjs-rails/src/app/EventBus.js +112 -0
  37. data/app/assets/javascripts/extjs-rails/src/button/Button.js +1483 -0
  38. data/app/assets/javascripts/extjs-rails/src/button/Cycle.js +215 -0
  39. data/app/assets/javascripts/extjs-rails/src/button/Split.js +99 -0
  40. data/app/assets/javascripts/extjs-rails/src/chart/Callout.js +140 -0
  41. data/app/assets/javascripts/extjs-rails/src/chart/Chart.js +966 -0
  42. data/app/assets/javascripts/extjs-rails/src/chart/Highlight.js +172 -0
  43. data/app/assets/javascripts/extjs-rails/src/chart/Label.js +241 -0
  44. data/app/assets/javascripts/extjs-rails/src/chart/Legend.js +474 -0
  45. data/app/assets/javascripts/extjs-rails/src/chart/LegendItem.js +217 -0
  46. data/app/assets/javascripts/extjs-rails/src/chart/Mask.js +230 -0
  47. data/app/assets/javascripts/extjs-rails/src/chart/MaskLayer.js +48 -0
  48. data/app/assets/javascripts/extjs-rails/src/chart/Navigation.js +79 -0
  49. data/app/assets/javascripts/extjs-rails/src/chart/Shape.js +106 -0
  50. data/app/assets/javascripts/extjs-rails/src/chart/Tip.js +98 -0
  51. data/app/assets/javascripts/extjs-rails/src/chart/TipSurface.js +42 -0
  52. data/app/assets/javascripts/extjs-rails/src/chart/axis/Abstract.js +73 -0
  53. data/app/assets/javascripts/extjs-rails/src/chart/axis/Axis.js +961 -0
  54. data/app/assets/javascripts/extjs-rails/src/chart/axis/Category.js +130 -0
  55. data/app/assets/javascripts/extjs-rails/src/chart/axis/Gauge.js +203 -0
  56. data/app/assets/javascripts/extjs-rails/src/chart/axis/Numeric.js +235 -0
  57. data/app/assets/javascripts/extjs-rails/src/chart/axis/Radial.js +204 -0
  58. data/app/assets/javascripts/extjs-rails/src/chart/axis/Time.js +135 -0
  59. data/app/assets/javascripts/extjs-rails/src/chart/series/Area.js +803 -0
  60. data/app/assets/javascripts/extjs-rails/src/chart/series/Bar.js +853 -0
  61. data/app/assets/javascripts/extjs-rails/src/chart/series/Cartesian.js +328 -0
  62. data/app/assets/javascripts/extjs-rails/src/chart/series/Column.js +104 -0
  63. data/app/assets/javascripts/extjs-rails/src/chart/series/Gauge.js +490 -0
  64. data/app/assets/javascripts/extjs-rails/src/chart/series/Line.js +1104 -0
  65. data/app/assets/javascripts/extjs-rails/src/chart/series/Pie.js +1072 -0
  66. data/app/assets/javascripts/extjs-rails/src/chart/series/Radar.js +440 -0
  67. data/app/assets/javascripts/extjs-rails/src/chart/series/Scatter.js +668 -0
  68. data/app/assets/javascripts/extjs-rails/src/chart/series/Series.js +443 -0
  69. data/app/assets/javascripts/extjs-rails/src/chart/theme/Base.js +175 -0
  70. data/app/assets/javascripts/extjs-rails/src/chart/theme/Theme.js +253 -0
  71. data/app/assets/javascripts/extjs-rails/src/container/AbstractContainer.js +1062 -0
  72. data/app/assets/javascripts/extjs-rails/src/container/ButtonGroup.js +143 -0
  73. data/app/assets/javascripts/extjs-rails/src/container/Container.js +212 -0
  74. data/app/assets/javascripts/extjs-rails/src/container/DockingContainer.js +265 -0
  75. data/app/assets/javascripts/extjs-rails/src/container/Viewport.js +184 -0
  76. data/app/assets/javascripts/extjs-rails/src/core/dom/Element.form.js +50 -0
  77. data/app/assets/javascripts/extjs-rails/src/core/dom/Element.static-more.js +159 -0
  78. data/app/assets/javascripts/extjs-rails/src/core/examples/index.html +321 -0
  79. data/app/assets/javascripts/extjs-rails/src/core/examples/index.js +6 -0
  80. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/CTO.js +25 -0
  81. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/CoolGuy.js +20 -0
  82. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/Developer.js +43 -0
  83. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/Gun.js +3 -0
  84. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/HumanResource.js +23 -0
  85. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/Musician.js +20 -0
  86. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/Person.js +50 -0
  87. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/ability/CanComposeSongs.js +9 -0
  88. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/ability/CanPlayGuitar.js +9 -0
  89. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/ability/CanSing.js +18 -0
  90. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/deadlock/A.js +3 -0
  91. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/deadlock/B.js +3 -0
  92. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/deadlock/C.js +3 -0
  93. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/deadlock/D.js +3 -0
  94. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/deadlock/E.js +3 -0
  95. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/notdeadlock/A.js +3 -0
  96. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/notdeadlock/B.js +4 -0
  97. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/notdeadlock/C.js +3 -0
  98. data/app/assets/javascripts/extjs-rails/src/core/src/EventManager.js +1167 -0
  99. data/app/assets/javascripts/extjs-rails/src/core/src/EventObject.js +883 -0
  100. data/app/assets/javascripts/extjs-rails/src/core/src/Ext-more.js +1283 -0
  101. data/app/assets/javascripts/extjs-rails/src/core/src/Ext.js +736 -0
  102. data/app/assets/javascripts/extjs-rails/src/core/src/Support.js +662 -0
  103. data/app/assets/javascripts/extjs-rails/src/core/src/class/Base.js +1085 -0
  104. data/app/assets/javascripts/extjs-rails/src/core/src/class/Class.js +676 -0
  105. data/app/assets/javascripts/extjs-rails/src/core/src/class/ClassManager.js +1591 -0
  106. data/app/assets/javascripts/extjs-rails/src/core/src/class/Loader.js +1423 -0
  107. data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.alignment.js +173 -0
  108. data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.insertion.js +193 -0
  109. data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.js +681 -0
  110. data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.position.js +356 -0
  111. data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.static.js +474 -0
  112. data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.style.js +851 -0
  113. data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.traversal.js +180 -0
  114. data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractHelper.js +291 -0
  115. data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractQuery.js +72 -0
  116. data/app/assets/javascripts/extjs-rails/src/core/src/dom/CompositeElement.js +75 -0
  117. data/app/assets/javascripts/extjs-rails/src/core/src/dom/CompositeElementLite.js +436 -0
  118. data/app/assets/javascripts/extjs-rails/src/core/src/dom/DomQuery-aria.js +1049 -0
  119. data/app/assets/javascripts/extjs-rails/src/core/src/env/Browser.js +186 -0
  120. data/app/assets/javascripts/extjs-rails/src/core/src/env/FeatureDetector.js +274 -0
  121. data/app/assets/javascripts/extjs-rails/src/core/src/env/OS.js +141 -0
  122. data/app/assets/javascripts/extjs-rails/src/core/src/lang/Array.js +1205 -0
  123. data/app/assets/javascripts/extjs-rails/src/core/src/lang/Date.js +1463 -0
  124. data/app/assets/javascripts/extjs-rails/src/core/src/lang/Error.js +326 -0
  125. data/app/assets/javascripts/extjs-rails/src/core/src/lang/Function.js +485 -0
  126. data/app/assets/javascripts/extjs-rails/src/core/src/lang/Number.js +175 -0
  127. data/app/assets/javascripts/extjs-rails/src/core/src/lang/Object.js +606 -0
  128. data/app/assets/javascripts/extjs-rails/src/core/src/lang/String.js +333 -0
  129. data/app/assets/javascripts/extjs-rails/src/core/src/misc/JSON.js +236 -0
  130. data/app/assets/javascripts/extjs-rails/src/core/src/perf/Accumulator.js +244 -0
  131. data/app/assets/javascripts/extjs-rails/src/core/src/perf/Monitor.js +197 -0
  132. data/app/assets/javascripts/extjs-rails/src/core/src/util/DelayedTask.js +71 -0
  133. data/app/assets/javascripts/extjs-rails/src/core/src/util/Event.js +215 -0
  134. data/app/assets/javascripts/extjs-rails/src/core/src/util/Format.js +551 -0
  135. data/app/assets/javascripts/extjs-rails/src/core/src/util/TaskManager.js +417 -0
  136. data/app/assets/javascripts/extjs-rails/src/core/src/version/Version.js +364 -0
  137. data/app/assets/javascripts/extjs-rails/src/core/test/unit/README.MD +91 -0
  138. data/app/assets/javascripts/extjs-rails/src/core/test/unit/bootstrap.js +39 -0
  139. data/app/assets/javascripts/extjs-rails/src/core/test/unit/build/build-data.js +34 -0
  140. data/app/assets/javascripts/extjs-rails/src/core/test/unit/build/build.sh +2 -0
  141. data/app/assets/javascripts/extjs-rails/src/core/test/unit/data.js +27 -0
  142. data/app/assets/javascripts/extjs-rails/src/core/test/unit/index.html +15 -0
  143. data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/dom.html +40 -0
  144. data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/dom/extjs-api.js +12 -0
  145. data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/dom/platform-api.js +134 -0
  146. data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/dom/sanity.js +4 -0
  147. data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/dom/touch-api-out.js +128 -0
  148. data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/dom/touch-api.js +89 -0
  149. data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/env/Environment.js +357 -0
  150. data/app/assets/javascripts/extjs-rails/src/core/test/unit/resources/APITest.js +37 -0
  151. data/app/assets/javascripts/extjs-rails/src/core/test/unit/resources/jsb3.js +14 -0
  152. data/app/assets/javascripts/extjs-rails/src/core/test/unit/resources/test-setup.js +137 -0
  153. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/EventManager.js +629 -0
  154. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/Ext-mess.backup +198 -0
  155. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/Ext-more.js +520 -0
  156. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/Ext.js +1550 -0
  157. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/Support.js +250 -0
  158. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/class/Base.js +47 -0
  159. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/class/Class.js +561 -0
  160. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/class/ClassManager.js +555 -0
  161. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/CompositeElementLite.js +409 -0
  162. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/DomHelper.js +444 -0
  163. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/Element.insertion.js +342 -0
  164. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/Element.js +731 -0
  165. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/Element.static.js +201 -0
  166. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/Element.style.js +118 -0
  167. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/Element.traversal.js +336 -0
  168. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/Array.js +1229 -0
  169. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/Date.js +697 -0
  170. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/Error.js +277 -0
  171. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/Function.js +536 -0
  172. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/Number.js +323 -0
  173. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/Object.js +591 -0
  174. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/String.js +451 -0
  175. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/misc/JSON.js +252 -0
  176. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/util/Format.js +521 -0
  177. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/version/Version.js +148 -0
  178. data/app/assets/javascripts/extjs-rails/src/core/test/unit/specs.html +19 -0
  179. data/app/assets/javascripts/extjs-rails/src/data/AbstractStore.js +887 -0
  180. data/app/assets/javascripts/extjs-rails/src/data/ArrayStore.js +74 -0
  181. data/app/assets/javascripts/extjs-rails/src/data/Batch.js +236 -0
  182. data/app/assets/javascripts/extjs-rails/src/data/BufferStore.js +13 -0
  183. data/app/assets/javascripts/extjs-rails/src/data/Connection.js +969 -0
  184. data/app/assets/javascripts/extjs-rails/src/data/DirectStore.js +50 -0
  185. data/app/assets/javascripts/extjs-rails/src/data/Errors.js +52 -0
  186. data/app/assets/javascripts/extjs-rails/src/data/Field.js +341 -0
  187. data/app/assets/javascripts/extjs-rails/src/data/IdGenerator.js +198 -0
  188. data/app/assets/javascripts/extjs-rails/src/data/JsonP.js +253 -0
  189. data/app/assets/javascripts/extjs-rails/src/data/JsonPStore.js +51 -0
  190. data/app/assets/javascripts/extjs-rails/src/data/JsonStore.js +60 -0
  191. data/app/assets/javascripts/extjs-rails/src/data/Model.js +1673 -0
  192. data/app/assets/javascripts/extjs-rails/src/data/NodeInterface.js +1294 -0
  193. data/app/assets/javascripts/extjs-rails/src/data/NodeStore.js +254 -0
  194. data/app/assets/javascripts/extjs-rails/src/data/Operation.js +331 -0
  195. data/app/assets/javascripts/extjs-rails/src/data/Request.js +40 -0
  196. data/app/assets/javascripts/extjs-rails/src/data/ResultSet.js +56 -0
  197. data/app/assets/javascripts/extjs-rails/src/data/SequentialIdGenerator.js +61 -0
  198. data/app/assets/javascripts/extjs-rails/src/data/SortTypes.js +125 -0
  199. data/app/assets/javascripts/extjs-rails/src/data/Store.js +2609 -0
  200. data/app/assets/javascripts/extjs-rails/src/data/StoreManager.js +156 -0
  201. data/app/assets/javascripts/extjs-rails/src/data/Tree.js +290 -0
  202. data/app/assets/javascripts/extjs-rails/src/data/TreeStore.js +655 -0
  203. data/app/assets/javascripts/extjs-rails/src/data/Types.js +190 -0
  204. data/app/assets/javascripts/extjs-rails/src/data/UuidGenerator.js +215 -0
  205. data/app/assets/javascripts/extjs-rails/src/data/XmlStore.js +76 -0
  206. data/app/assets/javascripts/extjs-rails/src/data/association/Association.js +243 -0
  207. data/app/assets/javascripts/extjs-rails/src/data/association/BelongsTo.js +291 -0
  208. data/app/assets/javascripts/extjs-rails/src/data/association/HasMany.js +289 -0
  209. data/app/assets/javascripts/extjs-rails/src/data/association/HasOne.js +304 -0
  210. data/app/assets/javascripts/extjs-rails/src/data/proxy/Ajax.js +282 -0
  211. data/app/assets/javascripts/extjs-rails/src/data/proxy/Client.js +21 -0
  212. data/app/assets/javascripts/extjs-rails/src/data/proxy/Direct.js +181 -0
  213. data/app/assets/javascripts/extjs-rails/src/data/proxy/JsonP.js +313 -0
  214. data/app/assets/javascripts/extjs-rails/src/data/proxy/LocalStorage.js +69 -0
  215. data/app/assets/javascripts/extjs-rails/src/data/proxy/Memory.js +156 -0
  216. data/app/assets/javascripts/extjs-rails/src/data/proxy/Proxy.js +433 -0
  217. data/app/assets/javascripts/extjs-rails/src/data/proxy/Rest.js +173 -0
  218. data/app/assets/javascripts/extjs-rails/src/data/proxy/Server.js +460 -0
  219. data/app/assets/javascripts/extjs-rails/src/data/proxy/SessionStorage.js +39 -0
  220. data/app/assets/javascripts/extjs-rails/src/data/proxy/WebStorage.js +546 -0
  221. data/app/assets/javascripts/extjs-rails/src/data/reader/Array.js +68 -0
  222. data/app/assets/javascripts/extjs-rails/src/data/reader/Json.js +383 -0
  223. data/app/assets/javascripts/extjs-rails/src/data/reader/Reader.js +735 -0
  224. data/app/assets/javascripts/extjs-rails/src/data/reader/Xml.js +292 -0
  225. data/app/assets/javascripts/extjs-rails/src/data/validations.js +149 -0
  226. data/app/assets/javascripts/extjs-rails/src/data/writer/Json.js +81 -0
  227. data/app/assets/javascripts/extjs-rails/src/data/writer/Writer.js +147 -0
  228. data/app/assets/javascripts/extjs-rails/src/data/writer/Xml.js +88 -0
  229. data/app/assets/javascripts/extjs-rails/src/dd/DD.js +300 -0
  230. data/app/assets/javascripts/extjs-rails/src/dd/DDProxy.js +204 -0
  231. data/app/assets/javascripts/extjs-rails/src/dd/DDTarget.js +171 -0
  232. data/app/assets/javascripts/extjs-rails/src/dd/DragDrop.js +1101 -0
  233. data/app/assets/javascripts/extjs-rails/src/dd/DragDropManager.js +1264 -0
  234. data/app/assets/javascripts/extjs-rails/src/dd/DragSource.js +392 -0
  235. data/app/assets/javascripts/extjs-rails/src/dd/DragTracker.js +562 -0
  236. data/app/assets/javascripts/extjs-rails/src/dd/DragZone.js +137 -0
  237. data/app/assets/javascripts/extjs-rails/src/dd/DropTarget.js +118 -0
  238. data/app/assets/javascripts/extjs-rails/src/dd/DropZone.js +254 -0
  239. data/app/assets/javascripts/extjs-rails/src/dd/Registry.js +117 -0
  240. data/app/assets/javascripts/extjs-rails/src/dd/ScrollManager.js +218 -0
  241. data/app/assets/javascripts/extjs-rails/src/dd/StatusProxy.js +179 -0
  242. data/app/assets/javascripts/extjs-rails/src/diag/layout/Context.js +523 -0
  243. data/app/assets/javascripts/extjs-rails/src/diag/layout/ContextItem.js +179 -0
  244. data/app/assets/javascripts/extjs-rails/src/direct/Event.js +35 -0
  245. data/app/assets/javascripts/extjs-rails/src/direct/ExceptionEvent.js +16 -0
  246. data/app/assets/javascripts/extjs-rails/src/direct/JsonProvider.js +82 -0
  247. data/app/assets/javascripts/extjs-rails/src/direct/Manager.js +263 -0
  248. data/app/assets/javascripts/extjs-rails/src/direct/PollingProvider.js +156 -0
  249. data/app/assets/javascripts/extjs-rails/src/direct/Provider.js +96 -0
  250. data/app/assets/javascripts/extjs-rails/src/direct/RemotingEvent.js +24 -0
  251. data/app/assets/javascripts/extjs-rails/src/direct/RemotingMethod.js +100 -0
  252. data/app/assets/javascripts/extjs-rails/src/direct/RemotingProvider.js +510 -0
  253. data/app/assets/javascripts/extjs-rails/src/direct/Transaction.js +41 -0
  254. data/app/assets/javascripts/extjs-rails/src/dom/Element.alignment.js +378 -0
  255. data/app/assets/javascripts/extjs-rails/src/dom/Element.anim.js +962 -0
  256. data/app/assets/javascripts/extjs-rails/src/dom/Element.dd.js +40 -0
  257. data/app/assets/javascripts/extjs-rails/src/dom/Element.fx.js +194 -0
  258. data/app/assets/javascripts/extjs-rails/src/dom/Element.js +1407 -0
  259. data/app/assets/javascripts/extjs-rails/src/dom/Element.position.js +501 -0
  260. data/app/assets/javascripts/extjs-rails/src/dom/Element.scroll.js +214 -0
  261. data/app/assets/javascripts/extjs-rails/src/dom/Element.style.js +792 -0
  262. data/app/assets/javascripts/extjs-rails/src/dom/Element.traversal.js +8 -0
  263. data/app/assets/javascripts/extjs-rails/src/dom/Helper.js +466 -0
  264. data/app/assets/javascripts/extjs-rails/src/dom/Query.js +1067 -0
  265. data/app/assets/javascripts/extjs-rails/src/draw/Color.js +303 -0
  266. data/app/assets/javascripts/extjs-rails/src/draw/Component.js +245 -0
  267. data/app/assets/javascripts/extjs-rails/src/draw/CompositeSprite.js +299 -0
  268. data/app/assets/javascripts/extjs-rails/src/draw/Draw.js +1217 -0
  269. data/app/assets/javascripts/extjs-rails/src/draw/Matrix.js +183 -0
  270. data/app/assets/javascripts/extjs-rails/src/draw/Sprite.js +554 -0
  271. data/app/assets/javascripts/extjs-rails/src/draw/SpriteDD.js +87 -0
  272. data/app/assets/javascripts/extjs-rails/src/draw/Surface.js +1001 -0
  273. data/app/assets/javascripts/extjs-rails/src/draw/Text.js +175 -0
  274. data/app/assets/javascripts/extjs-rails/src/draw/engine/ImageExporter.js +106 -0
  275. data/app/assets/javascripts/extjs-rails/src/draw/engine/Svg.js +734 -0
  276. data/app/assets/javascripts/extjs-rails/src/draw/engine/SvgExporter.js +280 -0
  277. data/app/assets/javascripts/extjs-rails/src/draw/engine/Vml.js +916 -0
  278. data/app/assets/javascripts/extjs-rails/src/flash/Component.js +248 -0
  279. data/app/assets/javascripts/extjs-rails/src/form/Basic.js +1018 -0
  280. data/app/assets/javascripts/extjs-rails/src/form/CheckboxGroup.js +441 -0
  281. data/app/assets/javascripts/extjs-rails/src/form/CheckboxManager.js +26 -0
  282. data/app/assets/javascripts/extjs-rails/src/form/FieldAncestor.js +210 -0
  283. data/app/assets/javascripts/extjs-rails/src/form/FieldContainer.js +290 -0
  284. data/app/assets/javascripts/extjs-rails/src/form/FieldSet.js +506 -0
  285. data/app/assets/javascripts/extjs-rails/src/form/Label.js +110 -0
  286. data/app/assets/javascripts/extjs-rails/src/form/Labelable.js +764 -0
  287. data/app/assets/javascripts/extjs-rails/src/form/Panel.js +335 -0
  288. data/app/assets/javascripts/extjs-rails/src/form/RadioGroup.js +124 -0
  289. data/app/assets/javascripts/extjs-rails/src/form/RadioManager.js +26 -0
  290. data/app/assets/javascripts/extjs-rails/src/form/action/Action.js +307 -0
  291. data/app/assets/javascripts/extjs-rails/src/form/action/DirectLoad.js +107 -0
  292. data/app/assets/javascripts/extjs-rails/src/form/action/DirectSubmit.js +119 -0
  293. data/app/assets/javascripts/extjs-rails/src/form/action/Load.js +120 -0
  294. data/app/assets/javascripts/extjs-rails/src/form/action/StandardSubmit.js +34 -0
  295. data/app/assets/javascripts/extjs-rails/src/form/action/Submit.js +257 -0
  296. data/app/assets/javascripts/extjs-rails/src/form/field/Base.js +813 -0
  297. data/app/assets/javascripts/extjs-rails/src/form/field/Checkbox.js +505 -0
  298. data/app/assets/javascripts/extjs-rails/src/form/field/ComboBox.js +1427 -0
  299. data/app/assets/javascripts/extjs-rails/src/form/field/Date.js +578 -0
  300. data/app/assets/javascripts/extjs-rails/src/form/field/Display.js +155 -0
  301. data/app/assets/javascripts/extjs-rails/src/form/field/Field.js +430 -0
  302. data/app/assets/javascripts/extjs-rails/src/form/field/File.js +265 -0
  303. data/app/assets/javascripts/extjs-rails/src/form/field/Hidden.js +75 -0
  304. data/app/assets/javascripts/extjs-rails/src/form/field/HtmlEditor.js +1439 -0
  305. data/app/assets/javascripts/extjs-rails/src/form/field/Number.js +380 -0
  306. data/app/assets/javascripts/extjs-rails/src/form/field/Picker.js +321 -0
  307. data/app/assets/javascripts/extjs-rails/src/form/field/Radio.js +279 -0
  308. data/app/assets/javascripts/extjs-rails/src/form/field/Spinner.js +321 -0
  309. data/app/assets/javascripts/extjs-rails/src/form/field/Text.js +727 -0
  310. data/app/assets/javascripts/extjs-rails/src/form/field/TextArea.js +228 -0
  311. data/app/assets/javascripts/extjs-rails/src/form/field/Time.js +459 -0
  312. data/app/assets/javascripts/extjs-rails/src/form/field/Trigger.js +469 -0
  313. data/app/assets/javascripts/extjs-rails/src/form/field/VTypes.js +172 -0
  314. data/app/assets/javascripts/extjs-rails/src/fx/Anim.js +472 -0
  315. data/app/assets/javascripts/extjs-rails/src/fx/Animator.js +410 -0
  316. data/app/assets/javascripts/extjs-rails/src/fx/CubicBezier.js +77 -0
  317. data/app/assets/javascripts/extjs-rails/src/fx/Easing.js +136 -0
  318. data/app/assets/javascripts/extjs-rails/src/fx/Manager.js +353 -0
  319. data/app/assets/javascripts/extjs-rails/src/fx/PropertyHandler.js +381 -0
  320. data/app/assets/javascripts/extjs-rails/src/fx/Queue.js +123 -0
  321. data/app/assets/javascripts/extjs-rails/src/fx/target/Component.js +118 -0
  322. data/app/assets/javascripts/extjs-rails/src/fx/target/CompositeElement.js +46 -0
  323. data/app/assets/javascripts/extjs-rails/src/fx/target/CompositeElementCSS.js +22 -0
  324. data/app/assets/javascripts/extjs-rails/src/fx/target/CompositeSprite.js +34 -0
  325. data/app/assets/javascripts/extjs-rails/src/fx/target/Element.js +83 -0
  326. data/app/assets/javascripts/extjs-rails/src/fx/target/ElementCSS.js +77 -0
  327. data/app/assets/javascripts/extjs-rails/src/fx/target/Sprite.js +128 -0
  328. data/app/assets/javascripts/extjs-rails/src/fx/target/Target.js +36 -0
  329. data/app/assets/javascripts/extjs-rails/src/grid/CellEditor.js +172 -0
  330. data/app/assets/javascripts/extjs-rails/src/grid/ColumnComponentLayout.js +34 -0
  331. data/app/assets/javascripts/extjs-rails/src/grid/ColumnLayout.js +201 -0
  332. data/app/assets/javascripts/extjs-rails/src/grid/Lockable.js +863 -0
  333. data/app/assets/javascripts/extjs-rails/src/grid/LockingView.js +169 -0
  334. data/app/assets/javascripts/extjs-rails/src/grid/PagingScroller.js +539 -0
  335. data/app/assets/javascripts/extjs-rails/src/grid/Panel.js +393 -0
  336. data/app/assets/javascripts/extjs-rails/src/grid/RowEditor.js +731 -0
  337. data/app/assets/javascripts/extjs-rails/src/grid/RowNumberer.js +76 -0
  338. data/app/assets/javascripts/extjs-rails/src/grid/Scroller.js +5 -0
  339. data/app/assets/javascripts/extjs-rails/src/grid/View.js +44 -0
  340. data/app/assets/javascripts/extjs-rails/src/grid/ViewDropZone.js +41 -0
  341. data/app/assets/javascripts/extjs-rails/src/grid/column/Action.js +318 -0
  342. data/app/assets/javascripts/extjs-rails/src/grid/column/Boolean.js +82 -0
  343. data/app/assets/javascripts/extjs-rails/src/grid/column/Column.js +835 -0
  344. data/app/assets/javascripts/extjs-rails/src/grid/column/Date.js +63 -0
  345. data/app/assets/javascripts/extjs-rails/src/grid/column/Number.js +52 -0
  346. data/app/assets/javascripts/extjs-rails/src/grid/column/Template.js +58 -0
  347. data/app/assets/javascripts/extjs-rails/src/grid/feature/AbstractSummary.js +154 -0
  348. data/app/assets/javascripts/extjs-rails/src/grid/feature/Chunking.js +77 -0
  349. data/app/assets/javascripts/extjs-rails/src/grid/feature/Feature.js +158 -0
  350. data/app/assets/javascripts/extjs-rails/src/grid/feature/Grouping.js +822 -0
  351. data/app/assets/javascripts/extjs-rails/src/grid/feature/GroupingSummary.js +243 -0
  352. data/app/assets/javascripts/extjs-rails/src/grid/feature/RowBody.js +116 -0
  353. data/app/assets/javascripts/extjs-rails/src/grid/feature/RowWrap.js +120 -0
  354. data/app/assets/javascripts/extjs-rails/src/grid/feature/Summary.js +167 -0
  355. data/app/assets/javascripts/extjs-rails/src/grid/header/Container.js +965 -0
  356. data/app/assets/javascripts/extjs-rails/src/grid/header/DragZone.js +69 -0
  357. data/app/assets/javascripts/extjs-rails/src/grid/header/DropZone.js +265 -0
  358. data/app/assets/javascripts/extjs-rails/src/grid/plugin/CellEditing.js +453 -0
  359. data/app/assets/javascripts/extjs-rails/src/grid/plugin/DragDrop.js +254 -0
  360. data/app/assets/javascripts/extjs-rails/src/grid/plugin/Editing.js +561 -0
  361. data/app/assets/javascripts/extjs-rails/src/grid/plugin/HeaderReorderer.js +49 -0
  362. data/app/assets/javascripts/extjs-rails/src/grid/plugin/HeaderResizer.js +292 -0
  363. data/app/assets/javascripts/extjs-rails/src/grid/plugin/RowEditing.js +339 -0
  364. data/app/assets/javascripts/extjs-rails/src/grid/property/Grid.js +351 -0
  365. data/app/assets/javascripts/extjs-rails/src/grid/property/HeaderContainer.js +109 -0
  366. data/app/assets/javascripts/extjs-rails/src/grid/property/Property.js +36 -0
  367. data/app/assets/javascripts/extjs-rails/src/grid/property/Store.js +141 -0
  368. data/app/assets/javascripts/extjs-rails/src/layout/ClassList.js +90 -0
  369. data/app/assets/javascripts/extjs-rails/src/layout/Context.js +1232 -0
  370. data/app/assets/javascripts/extjs-rails/src/layout/ContextItem.js +1470 -0
  371. data/app/assets/javascripts/extjs-rails/src/layout/Layout.js +761 -0
  372. data/app/assets/javascripts/extjs-rails/src/layout/component/Auto.js +220 -0
  373. data/app/assets/javascripts/extjs-rails/src/layout/component/Body.js +80 -0
  374. data/app/assets/javascripts/extjs-rails/src/layout/component/BoundList.js +95 -0
  375. data/app/assets/javascripts/extjs-rails/src/layout/component/Button.js +261 -0
  376. data/app/assets/javascripts/extjs-rails/src/layout/component/Component.js +427 -0
  377. data/app/assets/javascripts/extjs-rails/src/layout/component/Dock.js +1132 -0
  378. data/app/assets/javascripts/extjs-rails/src/layout/component/Draw.js +79 -0
  379. data/app/assets/javascripts/extjs-rails/src/layout/component/FieldSet.js +62 -0
  380. data/app/assets/javascripts/extjs-rails/src/layout/component/ProgressBar.js +54 -0
  381. data/app/assets/javascripts/extjs-rails/src/layout/component/Tab.js +23 -0
  382. data/app/assets/javascripts/extjs-rails/src/layout/component/field/ComboBox.js +52 -0
  383. data/app/assets/javascripts/extjs-rails/src/layout/component/field/Field.js +372 -0
  384. data/app/assets/javascripts/extjs-rails/src/layout/component/field/FieldContainer.js +48 -0
  385. data/app/assets/javascripts/extjs-rails/src/layout/component/field/HtmlEditor.js +54 -0
  386. data/app/assets/javascripts/extjs-rails/src/layout/component/field/Slider.js +58 -0
  387. data/app/assets/javascripts/extjs-rails/src/layout/component/field/Text.js +75 -0
  388. data/app/assets/javascripts/extjs-rails/src/layout/component/field/TextArea.js +51 -0
  389. data/app/assets/javascripts/extjs-rails/src/layout/component/field/Trigger.js +132 -0
  390. data/app/assets/javascripts/extjs-rails/src/layout/container/Absolute.js +121 -0
  391. data/app/assets/javascripts/extjs-rails/src/layout/container/Accordion.js +308 -0
  392. data/app/assets/javascripts/extjs-rails/src/layout/container/Anchor.js +403 -0
  393. data/app/assets/javascripts/extjs-rails/src/layout/container/Auto.js +70 -0
  394. data/app/assets/javascripts/extjs-rails/src/layout/container/Border-old-js +1079 -0
  395. data/app/assets/javascripts/extjs-rails/src/layout/container/Border.js +816 -0
  396. data/app/assets/javascripts/extjs-rails/src/layout/container/Box.js +929 -0
  397. data/app/assets/javascripts/extjs-rails/src/layout/container/Card.js +361 -0
  398. data/app/assets/javascripts/extjs-rails/src/layout/container/CheckboxGroup.js +376 -0
  399. data/app/assets/javascripts/extjs-rails/src/layout/container/Column.js +234 -0
  400. data/app/assets/javascripts/extjs-rails/src/layout/container/Container.js +961 -0
  401. data/app/assets/javascripts/extjs-rails/src/layout/container/Editor.js +74 -0
  402. data/app/assets/javascripts/extjs-rails/src/layout/container/Fit.js +287 -0
  403. data/app/assets/javascripts/extjs-rails/src/layout/container/Form.js +157 -0
  404. data/app/assets/javascripts/extjs-rails/src/layout/container/HBox.js +134 -0
  405. data/app/assets/javascripts/extjs-rails/src/layout/container/Table.js +412 -0
  406. data/app/assets/javascripts/extjs-rails/src/layout/container/VBox.js +139 -0
  407. data/app/assets/javascripts/extjs-rails/src/layout/container/boxOverflow/Menu.js +365 -0
  408. data/app/assets/javascripts/extjs-rails/src/layout/container/boxOverflow/None.js +83 -0
  409. data/app/assets/javascripts/extjs-rails/src/layout/container/boxOverflow/Scroller.js +475 -0
  410. data/app/assets/javascripts/extjs-rails/src/menu/CheckItem.js +169 -0
  411. data/app/assets/javascripts/extjs-rails/src/menu/ColorPicker.js +110 -0
  412. data/app/assets/javascripts/extjs-rails/src/menu/DatePicker.js +100 -0
  413. data/app/assets/javascripts/extjs-rails/src/menu/Item.js +553 -0
  414. data/app/assets/javascripts/extjs-rails/src/menu/KeyNav.js +134 -0
  415. data/app/assets/javascripts/extjs-rails/src/menu/Manager.js +219 -0
  416. data/app/assets/javascripts/extjs-rails/src/menu/Menu.js +579 -0
  417. data/app/assets/javascripts/extjs-rails/src/menu/Separator.js +126 -0
  418. data/app/assets/javascripts/extjs-rails/src/panel/AbstractPanel.js +323 -0
  419. data/app/assets/javascripts/extjs-rails/src/panel/DD.js +99 -0
  420. data/app/assets/javascripts/extjs-rails/src/panel/Header.js +518 -0
  421. data/app/assets/javascripts/extjs-rails/src/panel/Panel.js +2150 -0
  422. data/app/assets/javascripts/extjs-rails/src/panel/Proxy.js +131 -0
  423. data/app/assets/javascripts/extjs-rails/src/panel/Table.js +1018 -0
  424. data/app/assets/javascripts/extjs-rails/src/panel/Tool.js +304 -0
  425. data/app/assets/javascripts/extjs-rails/src/picker/Color.js +219 -0
  426. data/app/assets/javascripts/extjs-rails/src/picker/Date.js +1140 -0
  427. data/app/assets/javascripts/extjs-rails/src/picker/Month.js +490 -0
  428. data/app/assets/javascripts/extjs-rails/src/picker/Time.js +165 -0
  429. data/app/assets/javascripts/extjs-rails/src/resizer/BorderSplitter.js +22 -0
  430. data/app/assets/javascripts/extjs-rails/src/resizer/BorderSplitterTracker.js +210 -0
  431. data/app/assets/javascripts/extjs-rails/src/resizer/Handle.js +29 -0
  432. data/app/assets/javascripts/extjs-rails/src/resizer/ResizeTracker.js +346 -0
  433. data/app/assets/javascripts/extjs-rails/src/resizer/Resizer.js +477 -0
  434. data/app/assets/javascripts/extjs-rails/src/resizer/Splitter.js +242 -0
  435. data/app/assets/javascripts/extjs-rails/src/resizer/SplitterTracker.js +230 -0
  436. data/app/assets/javascripts/extjs-rails/src/selection/CellModel.js +395 -0
  437. data/app/assets/javascripts/extjs-rails/src/selection/CheckboxModel.js +234 -0
  438. data/app/assets/javascripts/extjs-rails/src/selection/DataViewModel.js +160 -0
  439. data/app/assets/javascripts/extjs-rails/src/selection/Model.js +646 -0
  440. data/app/assets/javascripts/extjs-rails/src/selection/RowModel.js +499 -0
  441. data/app/assets/javascripts/extjs-rails/src/selection/TreeModel.js +78 -0
  442. data/app/assets/javascripts/extjs-rails/src/slider/Multi.js +835 -0
  443. data/app/assets/javascripts/extjs-rails/src/slider/Single.js +56 -0
  444. data/app/assets/javascripts/extjs-rails/src/slider/Thumb.js +259 -0
  445. data/app/assets/javascripts/extjs-rails/src/slider/Tip.js +130 -0
  446. data/app/assets/javascripts/extjs-rails/src/state/CookieProvider.js +120 -0
  447. data/app/assets/javascripts/extjs-rails/src/state/LocalStorageProvider.js +72 -0
  448. data/app/assets/javascripts/extjs-rails/src/state/Manager.js +70 -0
  449. data/app/assets/javascripts/extjs-rails/src/state/Provider.js +182 -0
  450. data/app/assets/javascripts/extjs-rails/src/state/Stateful.js +364 -0
  451. data/app/assets/javascripts/extjs-rails/src/tab/Bar.js +258 -0
  452. data/app/assets/javascripts/extjs-rails/src/tab/Panel.js +654 -0
  453. data/app/assets/javascripts/extjs-rails/src/tab/Tab.js +358 -0
  454. data/app/assets/javascripts/extjs-rails/src/tail.js +10 -0
  455. data/app/assets/javascripts/extjs-rails/src/tip/QuickTip.js +335 -0
  456. data/app/assets/javascripts/extjs-rails/src/tip/QuickTipManager.js +239 -0
  457. data/app/assets/javascripts/extjs-rails/src/tip/Tip.js +160 -0
  458. data/app/assets/javascripts/extjs-rails/src/tip/ToolTip.js +691 -0
  459. data/app/assets/javascripts/extjs-rails/src/toolbar/Fill.js +28 -0
  460. data/app/assets/javascripts/extjs-rails/src/toolbar/Item.js +16 -0
  461. data/app/assets/javascripts/extjs-rails/src/toolbar/Paging.js +600 -0
  462. data/app/assets/javascripts/extjs-rails/src/toolbar/Separator.js +23 -0
  463. data/app/assets/javascripts/extjs-rails/src/toolbar/Spacer.js +33 -0
  464. data/app/assets/javascripts/extjs-rails/src/toolbar/TextItem.js +57 -0
  465. data/app/assets/javascripts/extjs-rails/src/toolbar/Toolbar-legacy.js +123 -0
  466. data/app/assets/javascripts/extjs-rails/src/toolbar/Toolbar.js +447 -0
  467. data/app/assets/javascripts/extjs-rails/src/tree/Column.js +90 -0
  468. data/app/assets/javascripts/extjs-rails/src/tree/Panel.js +505 -0
  469. data/app/assets/javascripts/extjs-rails/src/tree/View.js +658 -0
  470. data/app/assets/javascripts/extjs-rails/src/tree/ViewDragZone.js +49 -0
  471. data/app/assets/javascripts/extjs-rails/src/tree/ViewDropZone.js +287 -0
  472. data/app/assets/javascripts/extjs-rails/src/tree/plugin/TreeViewDragDrop.js +244 -0
  473. data/app/assets/javascripts/extjs-rails/src/util/AbstractMixedCollection.js +772 -0
  474. data/app/assets/javascripts/extjs-rails/src/util/Animate.js +426 -0
  475. data/app/assets/javascripts/extjs-rails/src/util/Bindable.js +102 -0
  476. data/app/assets/javascripts/extjs-rails/src/util/CSS.js +185 -0
  477. data/app/assets/javascripts/extjs-rails/src/util/ClickRepeater.js +238 -0
  478. data/app/assets/javascripts/extjs-rails/src/util/ComponentDragger.js +126 -0
  479. data/app/assets/javascripts/extjs-rails/src/util/Cookies.js +91 -0
  480. data/app/assets/javascripts/extjs-rails/src/util/ElementContainer.js +293 -0
  481. data/app/assets/javascripts/extjs-rails/src/util/Filter.js +159 -0
  482. data/app/assets/javascripts/extjs-rails/src/util/Floating.js +321 -0
  483. data/app/assets/javascripts/extjs-rails/src/util/Grouper.js +26 -0
  484. data/app/assets/javascripts/extjs-rails/src/util/HashMap.js +356 -0
  485. data/app/assets/javascripts/extjs-rails/src/util/History.js +285 -0
  486. data/app/assets/javascripts/extjs-rails/src/util/Inflector.js +297 -0
  487. data/app/assets/javascripts/extjs-rails/src/util/KeyMap.js +427 -0
  488. data/app/assets/javascripts/extjs-rails/src/util/KeyNav.js +239 -0
  489. data/app/assets/javascripts/extjs-rails/src/util/LruCache.js +257 -0
  490. data/app/assets/javascripts/extjs-rails/src/util/Memento.js +131 -0
  491. data/app/assets/javascripts/extjs-rails/src/util/MixedCollection.js +239 -0
  492. data/app/assets/javascripts/extjs-rails/src/util/Observable.js +1003 -0
  493. data/app/assets/javascripts/extjs-rails/src/util/Offset.js +60 -0
  494. data/app/assets/javascripts/extjs-rails/src/util/Point.js +93 -0
  495. data/app/assets/javascripts/extjs-rails/src/util/ProtoElement.js +205 -0
  496. data/app/assets/javascripts/extjs-rails/src/util/Queue.js +76 -0
  497. data/app/assets/javascripts/extjs-rails/src/util/Region.js +388 -0
  498. data/app/assets/javascripts/extjs-rails/src/util/Renderable.js +1079 -0
  499. data/app/assets/javascripts/extjs-rails/src/util/Sortable.js +248 -0
  500. data/app/assets/javascripts/extjs-rails/src/util/Sorter.js +179 -0
  501. data/app/assets/javascripts/extjs-rails/src/util/TextMetrics.js +148 -0
  502. data/app/assets/javascripts/extjs-rails/src/view/AbstractView.js +1103 -0
  503. data/app/assets/javascripts/extjs-rails/src/view/BoundList.js +207 -0
  504. data/app/assets/javascripts/extjs-rails/src/view/BoundListKeyNav.js +92 -0
  505. data/app/assets/javascripts/extjs-rails/src/view/DragZone.js +106 -0
  506. data/app/assets/javascripts/extjs-rails/src/view/DropZone.js +240 -0
  507. data/app/assets/javascripts/extjs-rails/src/view/Table.js +1229 -0
  508. data/app/assets/javascripts/extjs-rails/src/view/TableChunker.js +139 -0
  509. data/app/assets/javascripts/extjs-rails/src/view/View.js +636 -0
  510. data/app/assets/javascripts/extjs-rails/src/window/MessageBox.js +880 -0
  511. data/app/assets/javascripts/extjs-rails/src/window/Window-legacy.js +56 -0
  512. data/app/assets/javascripts/extjs-rails/src/window/Window.js +793 -0
  513. data/extjs-rails.gemspec +24 -0
  514. data/lib/extjs-rails.rb +7 -0
  515. data/lib/extjs-rails/engine.rb +7 -0
  516. data/lib/extjs-rails/version.rb +5 -0
  517. metadata +660 -0
@@ -0,0 +1,1049 @@
1
+ /*
2
+ * This is code is also distributed under MIT license for use
3
+ * with jQuery and prototype JavaScript libraries.
4
+ */
5
+ /**
6
+ * @class Ext.DomQuery
7
+ Provides high performance selector/xpath processing by compiling queries into reusable functions. New pseudo classes and matchers can be plugged. It works on HTML and XML documents (if a content node is passed in).
8
+ <p>
9
+ DomQuery supports most of the <a href="http://www.w3.org/TR/2005/WD-css3-selectors-20051215/#selectors">CSS3 selectors spec</a>, along with some custom selectors and basic XPath.</p>
10
+
11
+ <p>
12
+ All selectors, attribute filters and pseudos below can be combined infinitely in any order. For example "div.foo:nth-child(odd)[@foo=bar].bar:first" would be a perfectly valid selector. Node filters are processed in the order in which they appear, which allows you to optimize your queries for your document structure.
13
+ </p>
14
+ <h4>Element Selectors:</h4>
15
+ <ul class="list">
16
+ <li> <b>*</b> any element</li>
17
+ <li> <b>E</b> an element with the tag E</li>
18
+ <li> <b>E F</b> All descendent elements of E that have the tag F</li>
19
+ <li> <b>E > F</b> or <b>E/F</b> all direct children elements of E that have the tag F</li>
20
+ <li> <b>E + F</b> all elements with the tag F that are immediately preceded by an element with the tag E</li>
21
+ <li> <b>E ~ F</b> all elements with the tag F that are preceded by a sibling element with the tag E</li>
22
+ </ul>
23
+ <h4>Attribute Selectors:</h4>
24
+ <p>The use of &#64; and quotes are optional. For example, div[&#64;foo='bar'] is also a valid attribute selector.</p>
25
+ <ul class="list">
26
+ <li> <b>E[foo]</b> has an attribute "foo"</li>
27
+ <li> <b>E[foo=bar]</b> has an attribute "foo" that equals "bar"</li>
28
+ <li> <b>E[foo^=bar]</b> has an attribute "foo" that starts with "bar"</li>
29
+ <li> <b>E[foo$=bar]</b> has an attribute "foo" that ends with "bar"</li>
30
+ <li> <b>E[foo*=bar]</b> has an attribute "foo" that contains the substring "bar"</li>
31
+ <li> <b>E[foo%=2]</b> has an attribute "foo" that is evenly divisible by 2</li>
32
+ <li> <b>E[foo!=bar]</b> attribute "foo" does not equal "bar"</li>
33
+ </ul>
34
+ <h4>Pseudo Classes:</h4>
35
+ <ul class="list">
36
+ <li> <b>E:first-child</b> E is the first child of its parent</li>
37
+ <li> <b>E:last-child</b> E is the last child of its parent</li>
38
+ <li> <b>E:nth-child(<i>n</i>)</b> E is the <i>n</i>th child of its parent (1 based as per the spec)</li>
39
+ <li> <b>E:nth-child(odd)</b> E is an odd child of its parent</li>
40
+ <li> <b>E:nth-child(even)</b> E is an even child of its parent</li>
41
+ <li> <b>E:only-child</b> E is the only child of its parent</li>
42
+ <li> <b>E:checked</b> E is an element that is has a checked attribute that is true (e.g. a radio or checkbox) </li>
43
+ <li> <b>E:first</b> the first E in the resultset</li>
44
+ <li> <b>E:last</b> the last E in the resultset</li>
45
+ <li> <b>E:nth(<i>n</i>)</b> the <i>n</i>th E in the resultset (1 based)</li>
46
+ <li> <b>E:odd</b> shortcut for :nth-child(odd)</li>
47
+ <li> <b>E:even</b> shortcut for :nth-child(even)</li>
48
+ <li> <b>E:contains(foo)</b> E's innerHTML contains the substring "foo"</li>
49
+ <li> <b>E:nodeValue(foo)</b> E contains a textNode with a nodeValue that equals "foo"</li>
50
+ <li> <b>E:not(S)</b> an E element that does not match simple selector S</li>
51
+ <li> <b>E:has(S)</b> an E element that has a descendent that matches simple selector S</li>
52
+ <li> <b>E:next(S)</b> an E element whose next sibling matches simple selector S</li>
53
+ <li> <b>E:prev(S)</b> an E element whose previous sibling matches simple selector S</li>
54
+ <li> <b>E:any(S1|S2|S2)</b> an E element which matches any of the simple selectors S1, S2 or S3//\\</li>
55
+ </ul>
56
+ <h4>CSS Value Selectors:</h4>
57
+ <ul class="list">
58
+ <li> <b>E{display=none}</b> css value "display" that equals "none"</li>
59
+ <li> <b>E{display^=none}</b> css value "display" that starts with "none"</li>
60
+ <li> <b>E{display$=none}</b> css value "display" that ends with "none"</li>
61
+ <li> <b>E{display*=none}</b> css value "display" that contains the substring "none"</li>
62
+ <li> <b>E{display%=2}</b> css value "display" that is evenly divisible by 2</li>
63
+ <li> <b>E{display!=none}</b> css value "display" that does not equal "none"</li>
64
+ </ul>
65
+ * @singleton
66
+ */
67
+ Ext.ns('Ext.core');
68
+
69
+ Ext.core.DomQuery = Ext.DomQuery = (function(){
70
+ var cache = {},
71
+ simpleCache = {},
72
+ valueCache = {},
73
+ nonSpace = /\S/,
74
+ trimRe = /^\s+|\s+$/g,
75
+ tplRe = /\{(\d+)\}/g,
76
+ modeRe = /^(\s?[\/>+~]\s?|\s|$)/,
77
+ tagTokenRe = /^(#)?([\w-\*]+)/,
78
+ nthRe = /(\d*)n\+?(\d*)/,
79
+ nthRe2 = /\D/,
80
+ startIdRe = /^\s*\#/,
81
+ // This is for IE MSXML which does not support expandos.
82
+ // IE runs the same speed using setAttribute, however FF slows way down
83
+ // and Safari completely fails so they need to continue to use expandos.
84
+ isIE = window.ActiveXObject ? true : false,
85
+ key = 30803;
86
+
87
+ // this eval is stop the compressor from
88
+ // renaming the variable to something shorter
89
+ eval("var batch = 30803;");
90
+
91
+ // Retrieve the child node from a particular
92
+ // parent at the specified index.
93
+ function child(parent, index){
94
+ var i = 0,
95
+ n = parent.firstChild;
96
+ while(n){
97
+ if(n.nodeType == 1){
98
+ if(++i == index){
99
+ return n;
100
+ }
101
+ }
102
+ n = n.nextSibling;
103
+ }
104
+ return null;
105
+ }
106
+
107
+ // retrieve the next element node
108
+ function next(n){
109
+ while((n = n.nextSibling) && n.nodeType != 1);
110
+ return n;
111
+ }
112
+
113
+ // retrieve the previous element node
114
+ function prev(n){
115
+ while((n = n.previousSibling) && n.nodeType != 1);
116
+ return n;
117
+ }
118
+
119
+ // Mark each child node with a nodeIndex skipping and
120
+ // removing empty text nodes.
121
+ function children(parent){
122
+ var n = parent.firstChild,
123
+ nodeIndex = -1,
124
+ nextNode;
125
+ while(n){
126
+ nextNode = n.nextSibling;
127
+ // clean worthless empty nodes.
128
+ if(n.nodeType == 3 && !nonSpace.test(n.nodeValue)){
129
+ parent.removeChild(n);
130
+ }else{
131
+ // add an expando nodeIndex
132
+ n.nodeIndex = ++nodeIndex;
133
+ }
134
+ n = nextNode;
135
+ }
136
+ return this;
137
+ }
138
+
139
+
140
+ // nodeSet - array of nodes
141
+ // cls - CSS Class
142
+ function byClassName(nodeSet, cls){
143
+ if(!cls){
144
+ return nodeSet;
145
+ }
146
+ var result = [],
147
+ ri = -1,
148
+ i,
149
+ ci;
150
+ for(i = 0; ci = nodeSet[i]; i++){
151
+ if((' '+ci.className+' ').indexOf(cls) != -1){
152
+ result[++ri] = ci;
153
+ }
154
+ }
155
+ return result;
156
+ }
157
+
158
+ function attrValue(n, attr){
159
+ // if its an array, use the first node.
160
+ if(!n.tagName && typeof n.length != "undefined"){
161
+ n = n[0];
162
+ }
163
+ if(!n){
164
+ return null;
165
+ }
166
+
167
+ if(attr == "for"){
168
+ return n.htmlFor;
169
+ }
170
+ if(attr == "class" || attr == "className"){
171
+ return n.className;
172
+ }
173
+ return n.getAttribute(attr) || n[attr];
174
+
175
+ }
176
+
177
+
178
+ // ns - nodes
179
+ // mode - false, /, >, +, ~
180
+ // tagName - defaults to "*"
181
+ function getNodes(ns, mode, tagName){
182
+ var result = [],
183
+ ri = -1,
184
+ cs,
185
+ i,
186
+ j,
187
+ n,
188
+ ni,
189
+ ci,
190
+ cj,
191
+ cn,
192
+ utag;
193
+ if(!ns){
194
+ return result;
195
+ }
196
+ tagName = tagName || "*";
197
+ // convert to array
198
+ if(typeof ns.getElementsByTagName != "undefined"){
199
+ ns = [ns];
200
+ }
201
+
202
+ // no mode specified, grab all elements by tagName
203
+ // at any depth
204
+ if(!mode){
205
+ for(i = 0; ni = ns[i]; i++){
206
+ cs = ni.getElementsByTagName(tagName);
207
+ for(j = 0; ci = cs[j]; j++){
208
+ result[++ri] = ci;
209
+ }
210
+ }
211
+ // Direct Child mode (/ or >)
212
+ // E > F or E/F all direct children elements of E that have the tag
213
+ } else if(mode == "/" || mode == ">"){
214
+ utag = tagName.toUpperCase();
215
+ for(i = 0; ni = ns[i]; i++){
216
+ cn = ni.childNodes;
217
+ for(j = 0; cj = cn[j]; j++){
218
+ if(cj.nodeName == utag || cj.nodeName == tagName || tagName == '*'){
219
+ result[++ri] = cj;
220
+ }
221
+ }
222
+ }
223
+ // Immediately Preceding mode (+)
224
+ // E + F all elements with the tag F that are immediately preceded by an element with the tag E
225
+ }else if(mode == "+"){
226
+ utag = tagName.toUpperCase();
227
+ for(i = 0; n = ns[i]; i++){
228
+ while((n = n.nextSibling) && n.nodeType != 1);
229
+ if(n && (n.nodeName == utag || n.nodeName == tagName || tagName == '*')){
230
+ result[++ri] = n;
231
+ }
232
+ }
233
+ // Sibling mode (~)
234
+ // E ~ F all elements with the tag F that are preceded by a sibling element with the tag E
235
+ }else if(mode == "~"){
236
+ utag = tagName.toUpperCase();
237
+ for(i = 0; n = ns[i]; i++){
238
+ while((n = n.nextSibling)){
239
+ if (n.nodeName == utag || n.nodeName == tagName || tagName == '*'){
240
+ result[++ri] = n;
241
+ }
242
+ }
243
+ }
244
+ }
245
+ return result;
246
+ }
247
+
248
+ function concat(a, b){
249
+ if(b.slice){
250
+ return a.concat(b);
251
+ }
252
+ for(var i = 0, l = b.length; i < l; i++){
253
+ a[a.length] = b[i];
254
+ }
255
+ return a;
256
+ }
257
+
258
+ function byTag(cs, tagName){
259
+ if(cs.tagName || cs === document){
260
+ cs = [cs];
261
+ }
262
+ if(!tagName){
263
+ return cs;
264
+ }
265
+ var result = [],
266
+ ri = -1,
267
+ i,
268
+ ci;
269
+ tagName = tagName.toLowerCase();
270
+ for(i = 0; ci = cs[i]; i++){
271
+ if(ci.nodeType == 1 && ci.tagName.toLowerCase() == tagName){
272
+ result[++ri] = ci;
273
+ }
274
+ }
275
+ return result;
276
+ }
277
+
278
+ function byId(cs, id){
279
+ if(cs.tagName || cs === document){
280
+ cs = [cs];
281
+ }
282
+ if(!id){
283
+ return cs;
284
+ }
285
+ var result = [],
286
+ ri = -1,
287
+ i,
288
+ ci;
289
+ for(i = 0; ci = cs[i]; i++){
290
+ if(ci && ci.id == id){
291
+ result[++ri] = ci;
292
+ return result;
293
+ }
294
+ }
295
+ return result;
296
+ }
297
+
298
+ // operators are =, !=, ^=, $=, *=, %=, |= and ~=
299
+ // custom can be "{"
300
+ function byAttribute(cs, attr, value, op, custom){
301
+ var result = [],
302
+ ri = -1,
303
+ useGetStyle = custom == "{",
304
+ fn = Ext.DomQuery.operators[op],
305
+ a,
306
+ xml,
307
+ hasXml,
308
+ i,
309
+ ci;
310
+
311
+ for(i = 0; ci = cs[i]; i++){
312
+ // skip non-element nodes.
313
+ if(ci.nodeType != 1){
314
+ continue;
315
+ }
316
+ // only need to do this for the first node
317
+ if(!hasXml){
318
+ xml = Ext.DomQuery.isXml(ci);
319
+ hasXml = true;
320
+ }
321
+
322
+ // we only need to change the property names if we're dealing with html nodes, not XML
323
+ if(!xml){
324
+ if(useGetStyle){
325
+ a = Ext.DomQuery.getStyle(ci, attr);
326
+ } else if (attr == "class" || attr == "className"){
327
+ a = ci.className;
328
+ } else if (attr == "for"){
329
+ a = ci.htmlFor;
330
+ } else if (attr == "href"){
331
+ // getAttribute href bug
332
+ // http://www.glennjones.net/Post/809/getAttributehrefbug.htm
333
+ a = ci.getAttribute("href", 2);
334
+ } else{
335
+ a = ci.getAttribute(attr);
336
+ }
337
+ }else{
338
+ a = ci.getAttribute(attr);
339
+ }
340
+ if((fn && fn(a, value)) || (!fn && a)){
341
+ result[++ri] = ci;
342
+ }
343
+ }
344
+ return result;
345
+ }
346
+
347
+ function byPseudo(cs, name, value){
348
+ return Ext.DomQuery.pseudos[name](cs, value);
349
+ }
350
+
351
+ function nodupIEXml(cs){
352
+ var d = ++key,
353
+ r,
354
+ i,
355
+ len,
356
+ c;
357
+ cs[0].setAttribute("_nodup", d);
358
+ r = [cs[0]];
359
+ for(i = 1, len = cs.length; i < len; i++){
360
+ c = cs[i];
361
+ if(!c.getAttribute("_nodup") != d){
362
+ c.setAttribute("_nodup", d);
363
+ r[r.length] = c;
364
+ }
365
+ }
366
+ for(i = 0, len = cs.length; i < len; i++){
367
+ cs[i].removeAttribute("_nodup");
368
+ }
369
+ return r;
370
+ }
371
+
372
+ function nodup(cs){
373
+ if(!cs){
374
+ return [];
375
+ }
376
+ var len = cs.length, c, i, r = cs, cj, ri = -1, d, j;
377
+ if(!len || typeof cs.nodeType != "undefined" || len == 1){
378
+ return cs;
379
+ }
380
+ if(isIE && typeof cs[0].selectSingleNode != "undefined"){
381
+ return nodupIEXml(cs);
382
+ }
383
+ d = ++key;
384
+ cs[0]._nodup = d;
385
+ for(i = 1; c = cs[i]; i++){
386
+ if(c._nodup != d){
387
+ c._nodup = d;
388
+ }else{
389
+ r = [];
390
+ for(j = 0; j < i; j++){
391
+ r[++ri] = cs[j];
392
+ }
393
+ for(j = i+1; cj = cs[j]; j++){
394
+ if(cj._nodup != d){
395
+ cj._nodup = d;
396
+ r[++ri] = cj;
397
+ }
398
+ }
399
+ return r;
400
+ }
401
+ }
402
+ return r;
403
+ }
404
+
405
+ function quickDiffIEXml(c1, c2){
406
+ var d = ++key,
407
+ r = [],
408
+ i,
409
+ len;
410
+ for(i = 0, len = c1.length; i < len; i++){
411
+ c1[i].setAttribute("_qdiff", d);
412
+ }
413
+ for(i = 0, len = c2.length; i < len; i++){
414
+ if(c2[i].getAttribute("_qdiff") != d){
415
+ r[r.length] = c2[i];
416
+ }
417
+ }
418
+ for(i = 0, len = c1.length; i < len; i++){
419
+ c1[i].removeAttribute("_qdiff");
420
+ }
421
+ return r;
422
+ }
423
+
424
+ function quickDiff(c1, c2){
425
+ var len1 = c1.length,
426
+ d = ++key,
427
+ r = [],
428
+ i,
429
+ len;
430
+ if(!len1){
431
+ return c2;
432
+ }
433
+ if(isIE && typeof c1[0].selectSingleNode != "undefined"){
434
+ return quickDiffIEXml(c1, c2);
435
+ }
436
+ for(i = 0; i < len1; i++){
437
+ c1[i]._qdiff = d;
438
+ }
439
+ for(i = 0, len = c2.length; i < len; i++){
440
+ if(c2[i]._qdiff != d){
441
+ r[r.length] = c2[i];
442
+ }
443
+ }
444
+ return r;
445
+ }
446
+
447
+ function quickId(ns, mode, root, id){
448
+ var result,
449
+ d;
450
+ if(ns === root) {
451
+ // We're doing a rooted query by Id, so if the "all" collection is available, use it
452
+ if (root.all) {
453
+ result = root.all[id];
454
+
455
+ // If not immediate child
456
+ if (result && (mode == "/" || mode == ">")) {
457
+ if (result.parentNode !== root) {
458
+ return;
459
+ }
460
+ }
461
+ return result;
462
+ }
463
+ // Otherwise, just do a global lookup by ID
464
+ else {
465
+ d = root.ownerDocument || root;
466
+ return d.getElementById(id);
467
+ }
468
+ }
469
+ ns = getNodes(ns, mode, "*");
470
+ return byId(ns, id);
471
+ }
472
+
473
+ return {
474
+ getStyle : function(el, name){
475
+ return Ext.fly(el).getStyle(name);
476
+ },
477
+ /**
478
+ * Compiles a selector/xpath query into a reusable function. The returned function
479
+ * takes one parameter "root" (optional), which is the context node from where the query should start.
480
+ * @param {String} selector The selector/xpath query
481
+ * @param {String} type (optional) Either "select" (the default) or "simple" for a simple selector match
482
+ * @return {Function}
483
+ */
484
+ compile : function(path, type){
485
+ type = type || "select";
486
+
487
+ // setup fn preamble
488
+ var fn = ["var f = function(root){\n var mode; ++batch; var n = root || document;\n"],
489
+ mode,
490
+ lastPath,
491
+ matchers = Ext.DomQuery.matchers,
492
+ matchersLn = matchers.length,
493
+ modeMatch,
494
+ // accept leading mode switch
495
+ lmode = path.match(modeRe),
496
+ tokenMatch,
497
+ matched,
498
+ j,
499
+ t,
500
+ m;
501
+
502
+ if(lmode && lmode[1]){
503
+ fn[fn.length] = 'mode="'+lmode[1].replace(trimRe, "")+'";';
504
+ path = path.replace(lmode[1], "");
505
+ }
506
+
507
+ // strip leading slashes
508
+ while(path.substr(0, 1)=="/"){
509
+ path = path.substr(1);
510
+ }
511
+
512
+ while(path && lastPath != path){
513
+ lastPath = path;
514
+ tokenMatch = path.match(tagTokenRe);
515
+ if(type == "select"){
516
+ if(tokenMatch){
517
+ // ID Selector
518
+ if(tokenMatch[1] == "#"){
519
+ fn[fn.length] = 'n = quickId(n, mode, root, "'+tokenMatch[2]+'");';
520
+ }else{
521
+ fn[fn.length] = 'n = getNodes(n, mode, "'+tokenMatch[2]+'");';
522
+ }
523
+ path = path.replace(tokenMatch[0], "");
524
+ }else if(path.substr(0, 1) != '@'){
525
+ fn[fn.length] = 'n = getNodes(n, mode, "*");';
526
+ }
527
+ // type of "simple"
528
+ }else{
529
+ if(tokenMatch){
530
+ if(tokenMatch[1] == "#"){
531
+ fn[fn.length] = 'n = byId(n, "'+tokenMatch[2]+'");';
532
+ }else{
533
+ fn[fn.length] = 'n = byTag(n, "'+tokenMatch[2]+'");';
534
+ }
535
+ path = path.replace(tokenMatch[0], "");
536
+ }
537
+ }
538
+ while(!(modeMatch = path.match(modeRe))){
539
+ matched = false;
540
+ for(j = 0; j < matchersLn; j++){
541
+ t = matchers[j];
542
+ m = path.match(t.re);
543
+ if(m){
544
+ fn[fn.length] = t.select.replace(tplRe, function(x, i){
545
+ return m[i];
546
+ });
547
+ path = path.replace(m[0], "");
548
+ matched = true;
549
+ break;
550
+ }
551
+ }
552
+ // prevent infinite loop on bad selector
553
+ if(!matched){
554
+ //<debug>
555
+ Ext.Error.raise({
556
+ sourceClass: 'Ext.DomQuery',
557
+ sourceMethod: 'compile',
558
+ msg: 'Error parsing selector. Parsing failed at "' + path + '"'
559
+ });
560
+ //</debug>
561
+ }
562
+ }
563
+ if(modeMatch[1]){
564
+ fn[fn.length] = 'mode="'+modeMatch[1].replace(trimRe, "")+'";';
565
+ path = path.replace(modeMatch[1], "");
566
+ }
567
+ }
568
+ // close fn out
569
+ fn[fn.length] = "return nodup(n);\n}";
570
+
571
+ // eval fn and return it
572
+ eval(fn.join(""));
573
+ return f;
574
+ },
575
+
576
+ /**
577
+ * Selects an array of DOM nodes using JavaScript-only implementation.
578
+ *
579
+ * Use {@link #select} to take advantage of browsers built-in support for CSS selectors.
580
+ *
581
+ * @param {String} selector The selector/xpath query (can be a comma separated list of selectors)
582
+ * @param {HTMLElement/String} root (optional) The start of the query (defaults to document).
583
+ * @return {Array} An Array of DOM elements which match the selector. If there are
584
+ * no matches, and empty Array is returned.
585
+ */
586
+ jsSelect: function(path, root, type){
587
+ // set root to doc if not specified.
588
+ root = root || document;
589
+
590
+ if(typeof root == "string"){
591
+ root = document.getElementById(root);
592
+ }
593
+ var paths = path.split(","),
594
+ results = [],
595
+ i,
596
+ len,
597
+ subPath,
598
+ result;
599
+
600
+ // loop over each selector
601
+ for(i = 0, len = paths.length; i < len; i++){
602
+ subPath = paths[i].replace(trimRe, "");
603
+ // compile and place in cache
604
+ if(!cache[subPath]){
605
+ cache[subPath] = Ext.DomQuery.compile(subPath);
606
+ if(!cache[subPath]){
607
+ //<debug>
608
+ Ext.Error.raise({
609
+ sourceClass: 'Ext.DomQuery',
610
+ sourceMethod: 'jsSelect',
611
+ msg: subPath + ' is not a valid selector'
612
+ });
613
+ //</debug>
614
+ }
615
+ }
616
+ result = cache[subPath](root);
617
+ if(result && result != document){
618
+ results = results.concat(result);
619
+ }
620
+ }
621
+
622
+ // if there were multiple selectors, make sure dups
623
+ // are eliminated
624
+ if(paths.length > 1){
625
+ return nodup(results);
626
+ }
627
+ return results;
628
+ },
629
+
630
+ isXml: function(el) {
631
+ var docEl = (el ? el.ownerDocument || el : 0).documentElement;
632
+ return docEl ? docEl.nodeName !== "HTML" : false;
633
+ },
634
+
635
+ /**
636
+ * Selects an array of DOM nodes by CSS/XPath selector.
637
+ *
638
+ * Uses [document.querySelectorAll][0] if browser supports that, otherwise falls back to
639
+ * {@link #jsSelect} to do the work.
640
+ *
641
+ * Aliased as {@link Ext#query}.
642
+ *
643
+ * [0]: https://developer.mozilla.org/en/DOM/document.querySelectorAll
644
+ *
645
+ * @param {String} path The selector/xpath query
646
+ * @param {HTMLElement} root (optional) The start of the query (defaults to document).
647
+ * @return {Array} An array of DOM elements (not a NodeList as returned by `querySelectorAll`).
648
+ * Empty array when no matches.
649
+ * @method
650
+ */
651
+ select : document.querySelectorAll ? function(path, root, type) {
652
+ root = root || document;
653
+ // if (!Ext.DomQuery.isXml(root)) {
654
+ // try {
655
+ // /*
656
+ // * This checking here is to "fix" the behaviour of querySelectorAll
657
+ // * for non root document queries. The way qsa works is intentional,
658
+ // * however it's definitely not the expected way it should work.
659
+ // * More info: http://ejohn.org/blog/thoughts-on-queryselectorall/
660
+ // *
661
+ // * We only modify the path for single selectors (ie, no multiples),
662
+ // * without a full parser it makes it difficult to do this correctly.
663
+ // */
664
+ // var isDocumentRoot = root.nodeType === 9,
665
+ // _path = path,
666
+ // _root = root;
667
+ //
668
+ // if (!isDocumentRoot && path.indexOf(',') === -1 && !startIdRe.test(path)) {
669
+ // _path = '#' + Ext.id(root) + ' ' + path;
670
+ // _root = root.parentNode;
671
+ // }
672
+ // return Ext.Array.toArray(_root.querySelectorAll(_path));
673
+ // }
674
+ // catch (e) {
675
+ // }
676
+ // }
677
+ return Ext.DomQuery.jsSelect.call(this, path, root, type);
678
+ } : function(path, root, type) {
679
+ return Ext.DomQuery.jsSelect.call(this, path, root, type);
680
+ },
681
+
682
+ /**
683
+ * Selects a single element.
684
+ * @param {String} selector The selector/xpath query
685
+ * @param {HTMLElement} root (optional) The start of the query (defaults to document).
686
+ * @return {HTMLElement} The DOM element which matched the selector.
687
+ */
688
+ selectNode : function(path, root){
689
+ return Ext.DomQuery.select(path, root)[0];
690
+ },
691
+
692
+ /**
693
+ * Selects the value of a node, optionally replacing null with the defaultValue.
694
+ * @param {String} selector The selector/xpath query
695
+ * @param {HTMLElement} [root] The start of the query (defaults to document).
696
+ * @param {String} [defaultValue]
697
+ * @return {String}
698
+ */
699
+ selectValue : function(path, root, defaultValue){
700
+ path = path.replace(trimRe, "");
701
+ if(!valueCache[path]){
702
+ valueCache[path] = Ext.DomQuery.compile(path, "select");
703
+ }
704
+ var n = valueCache[path](root), v;
705
+ n = n[0] ? n[0] : n;
706
+
707
+ // overcome a limitation of maximum textnode size
708
+ // Rumored to potentially crash IE6 but has not been confirmed.
709
+ // http://reference.sitepoint.com/javascript/Node/normalize
710
+ // https://developer.mozilla.org/En/DOM/Node.normalize
711
+ if (typeof n.normalize == 'function') {
712
+ n.normalize();
713
+ }
714
+
715
+ v = (n && n.firstChild ? n.firstChild.nodeValue : null);
716
+ return ((v === null||v === undefined||v==='') ? defaultValue : v);
717
+ },
718
+
719
+ /**
720
+ * Selects the value of a node, parsing integers and floats. Returns the defaultValue, or 0 if none is specified.
721
+ * @param {String} selector The selector/xpath query
722
+ * @param {HTMLElement} [root] The start of the query (defaults to document).
723
+ * @param {Number} [defaultValue]
724
+ * @return {Number}
725
+ */
726
+ selectNumber : function(path, root, defaultValue){
727
+ var v = Ext.DomQuery.selectValue(path, root, defaultValue || 0);
728
+ return parseFloat(v);
729
+ },
730
+
731
+ /**
732
+ * Returns true if the passed element(s) match the passed simple selector (e.g. div.some-class or span:first-child)
733
+ * @param {String/HTMLElement/Array} el An element id, element or array of elements
734
+ * @param {String} selector The simple selector to test
735
+ * @return {Boolean}
736
+ */
737
+ is : function(el, ss){
738
+ if(typeof el == "string"){
739
+ el = document.getElementById(el);
740
+ }
741
+ var isArray = Ext.isArray(el),
742
+ result = Ext.DomQuery.filter(isArray ? el : [el], ss);
743
+ return isArray ? (result.length == el.length) : (result.length > 0);
744
+ },
745
+
746
+ /**
747
+ * Filters an array of elements to only include matches of a simple selector (e.g. div.some-class or span:first-child)
748
+ * @param {Array} el An array of elements to filter
749
+ * @param {String} selector The simple selector to test
750
+ * @param {Boolean} nonMatches If true, it returns the elements that DON'T match
751
+ * the selector instead of the ones that match
752
+ * @return {Array} An Array of DOM elements which match the selector. If there are
753
+ * no matches, and empty Array is returned.
754
+ */
755
+ filter : function(els, ss, nonMatches){
756
+ ss = ss.replace(trimRe, "");
757
+ if(!simpleCache[ss]){
758
+ simpleCache[ss] = Ext.DomQuery.compile(ss, "simple");
759
+ }
760
+ var result = simpleCache[ss](els);
761
+ return nonMatches ? quickDiff(result, els) : result;
762
+ },
763
+
764
+ /**
765
+ * Collection of matching regular expressions and code snippets.
766
+ * Each capture group within () will be replace the {} in the select
767
+ * statement as specified by their index.
768
+ */
769
+ matchers : [{
770
+ re: /^\.([\w\-]+)/,
771
+ select: 'n = byClassName(n, " {1} ");'
772
+ }, {
773
+ re: /^\:([\w\-]+)(?:\(((?:[^\s>\/]*|.*?))\))?/,
774
+ select: 'n = byPseudo(n, "{1}", "{2}");'
775
+ },{
776
+ re: /^(?:([\[\{])(?:@)?([\w\-]+)\s?(?:(=|.=)\s?['"]?(.*?)["']?)?[\]\}])/,
777
+ select: 'n = byAttribute(n, "{2}", "{4}", "{3}", "{1}");'
778
+ }, {
779
+ re: /^#([\w\-]+)/,
780
+ select: 'n = byId(n, "{1}");'
781
+ },{
782
+ re: /^@([\w\-]+)/,
783
+ select: 'return {firstChild:{nodeValue:attrValue(n, "{1}")}};'
784
+ }
785
+ ],
786
+
787
+ /**
788
+ * Collection of operator comparison functions. The default operators are =, !=, ^=, $=, *=, %=, |= and ~=.
789
+ * New operators can be added as long as the match the format <i>c</i>= where <i>c</i> is any character other than space, &gt; &lt;.
790
+ */
791
+ operators : {
792
+ "=" : function(a, v){
793
+ return a == v;
794
+ },
795
+ "!=" : function(a, v){
796
+ return a != v;
797
+ },
798
+ "^=" : function(a, v){
799
+ return a && a.substr(0, v.length) == v;
800
+ },
801
+ "$=" : function(a, v){
802
+ return a && a.substr(a.length-v.length) == v;
803
+ },
804
+ "*=" : function(a, v){
805
+ return a && a.indexOf(v) !== -1;
806
+ },
807
+ "%=" : function(a, v){
808
+ return (a % v) == 0;
809
+ },
810
+ "|=" : function(a, v){
811
+ return a && (a == v || a.substr(0, v.length+1) == v+'-');
812
+ },
813
+ "~=" : function(a, v){
814
+ return a && (' '+a+' ').indexOf(' '+v+' ') != -1;
815
+ }
816
+ },
817
+
818
+ /**
819
+ Object hash of "pseudo class" filter functions which are used when filtering selections.
820
+ Each function is passed two parameters:
821
+
822
+ - **c** : Array
823
+ An Array of DOM elements to filter.
824
+
825
+ - **v** : String
826
+ The argument (if any) supplied in the selector.
827
+
828
+ A filter function returns an Array of DOM elements which conform to the pseudo class.
829
+ In addition to the provided pseudo classes listed above such as `first-child` and `nth-child`,
830
+ developers may add additional, custom psuedo class filters to select elements according to application-specific requirements.
831
+
832
+ For example, to filter `a` elements to only return links to __external__ resources:
833
+
834
+ Ext.DomQuery.pseudos.external = function(c, v){
835
+ var r = [], ri = -1;
836
+ for(var i = 0, ci; ci = c[i]; i++){
837
+ // Include in result set only if it's a link to an external resource
838
+ if(ci.hostname != location.hostname){
839
+ r[++ri] = ci;
840
+ }
841
+ }
842
+ return r;
843
+ };
844
+
845
+ Then external links could be gathered with the following statement:
846
+
847
+ var externalLinks = Ext.select("a:external");
848
+
849
+ * @markdown
850
+ */
851
+ pseudos : {
852
+ "first-child" : function(c){
853
+ var r = [], ri = -1, n, i, ci;
854
+ for(i = 0, ci; (ci = n = c[i]); i++) {
855
+ while((n = n.previousSibling) && n.nodeType != 1);
856
+ if(!n){
857
+ r[++ri] = ci;
858
+ }
859
+ }
860
+ return r;
861
+ },
862
+
863
+ "last-child" : function(c){
864
+ var r = [], ri = -1, n, i, ci;
865
+ for(i = 0, ci; (ci = n = c[i]); i++){
866
+ while((n = n.nextSibling) && n.nodeType != 1);
867
+ if(!n){
868
+ r[++ri] = ci;
869
+ }
870
+ }
871
+ return r;
872
+ },
873
+
874
+ "nth-child" : function(c, a) {
875
+ var r = [], ri = -1,
876
+ m = nthRe.exec(a == "even" && "2n" || a == "odd" && "2n+1" || !nthRe2.test(a) && "n+" + a || a),
877
+ f = (m[1] || 1) - 0, l = m[2] - 0,
878
+ i, n, pn, j, cn;
879
+ for(i = 0; n = c[i]; i++){
880
+ pn = n.parentNode;
881
+ if (batch != pn._batch) {
882
+ j = 0;
883
+ for(cn = pn.firstChild; cn; cn = cn.nextSibling){
884
+ if(cn.nodeType == 1){
885
+ cn.nodeIndex = ++j;
886
+ }
887
+ }
888
+ pn._batch = batch;
889
+ }
890
+ if (f == 1) {
891
+ if (l == 0 || n.nodeIndex == l){
892
+ r[++ri] = n;
893
+ }
894
+ } else if ((n.nodeIndex + l) % f == 0){
895
+ r[++ri] = n;
896
+ }
897
+ }
898
+
899
+ return r;
900
+ },
901
+
902
+ "only-child" : function(c){
903
+ var r = [], ri = -1, i, ci;
904
+ for(i = 0; ci = c[i]; i++){
905
+ if(!prev(ci) && !next(ci)){
906
+ r[++ri] = ci;
907
+ }
908
+ }
909
+ return r;
910
+ },
911
+
912
+ "empty" : function(c){
913
+ var r = [], ri = -1, i, ci, cns, j, cn, empty;
914
+ for(i = 0; ci = c[i]; i++){
915
+ cns = ci.childNodes;
916
+ j = 0;
917
+ empty = true;
918
+ while(cn = cns[j]){
919
+ ++j;
920
+ if(cn.nodeType == 1 || cn.nodeType == 3){
921
+ empty = false;
922
+ break;
923
+ }
924
+ }
925
+ if(empty){
926
+ r[++ri] = ci;
927
+ }
928
+ }
929
+ return r;
930
+ },
931
+
932
+ "contains" : function(c, v){
933
+ var r = [], ri = -1, i, ci;
934
+ for(i = 0; ci = c[i]; i++){
935
+ if((ci.textContent||ci.innerText||'').indexOf(v) != -1){
936
+ r[++ri] = ci;
937
+ }
938
+ }
939
+ return r;
940
+ },
941
+
942
+ "nodeValue" : function(c, v){
943
+ var r = [], ri = -1, i, ci;
944
+ for(i = 0; ci = c[i]; i++){
945
+ if(ci.firstChild && ci.firstChild.nodeValue == v){
946
+ r[++ri] = ci;
947
+ }
948
+ }
949
+ return r;
950
+ },
951
+
952
+ "checked" : function(c){
953
+ var r = [], ri = -1, i, ci;
954
+ for(i = 0; ci = c[i]; i++){
955
+ if(ci.checked == true){
956
+ r[++ri] = ci;
957
+ }
958
+ }
959
+ return r;
960
+ },
961
+
962
+ "not" : function(c, ss){
963
+ return Ext.DomQuery.filter(c, ss, true);
964
+ },
965
+
966
+ "any" : function(c, selectors){
967
+ var ss = selectors.split('|'),
968
+ r = [], ri = -1, s, i, ci, j;
969
+ for(i = 0; ci = c[i]; i++){
970
+ for(j = 0; s = ss[j]; j++){
971
+ if(Ext.DomQuery.is(ci, s)){
972
+ r[++ri] = ci;
973
+ break;
974
+ }
975
+ }
976
+ }
977
+ return r;
978
+ },
979
+
980
+ "odd" : function(c){
981
+ return this["nth-child"](c, "odd");
982
+ },
983
+
984
+ "even" : function(c){
985
+ return this["nth-child"](c, "even");
986
+ },
987
+
988
+ "nth" : function(c, a){
989
+ return c[a-1] || [];
990
+ },
991
+
992
+ "first" : function(c){
993
+ return c[0] || [];
994
+ },
995
+
996
+ "last" : function(c){
997
+ return c[c.length-1] || [];
998
+ },
999
+
1000
+ "has" : function(c, ss){
1001
+ var s = Ext.DomQuery.select,
1002
+ r = [], ri = -1,
1003
+ i, ci;
1004
+ for(i = 0; ci = c[i]; i++){
1005
+ if(s(ss, ci).length > 0){
1006
+ r[++ri] = ci;
1007
+ }
1008
+ }
1009
+ return r;
1010
+ },
1011
+
1012
+ "next" : function(c, ss){
1013
+ var is = Ext.DomQuery.is,
1014
+ r = [], ri = -1,
1015
+ i, ci, n;
1016
+ for(i = 0; ci = c[i]; i++){
1017
+ n = next(ci);
1018
+ if(n && is(n, ss)){
1019
+ r[++ri] = ci;
1020
+ }
1021
+ }
1022
+ return r;
1023
+ },
1024
+
1025
+ "prev" : function(c, ss){
1026
+ var is = Ext.DomQuery.is,
1027
+ r = [], ri = -1,
1028
+ i, ci, n;
1029
+ for(i = 0; ci = c[i]; i++){
1030
+ n = prev(ci);
1031
+ if(n && is(n, ss)){
1032
+ r[++ri] = ci;
1033
+ }
1034
+ }
1035
+ return r;
1036
+ }
1037
+ }
1038
+ };
1039
+ }());
1040
+
1041
+ /**
1042
+ * Selects an array of DOM nodes by CSS/XPath selector. Shorthand of {@link Ext.DomQuery#select}
1043
+ * @param {String} path The selector/xpath query
1044
+ * @param {HTMLElement} root (optional) The start of the query (defaults to document).
1045
+ * @return {Array}
1046
+ * @member Ext
1047
+ * @method query
1048
+ */
1049
+ Ext.query = Ext.DomQuery.select;