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,356 @@
1
+ /**
2
+ * @class Ext.dom.AbstractElement
3
+ */
4
+ (function(){
5
+
6
+ var Element = Ext.dom.AbstractElement;
7
+
8
+ Element.override({
9
+
10
+ /**
11
+ * Gets the current X position of the element based on page coordinates. Element must be part of the DOM
12
+ * tree to have page coordinates (display:none or elements not appended return false).
13
+ * @return {Number} The X position of the element
14
+ */
15
+ getX: function(el) {
16
+ return this.getXY(el)[0];
17
+ },
18
+
19
+ /**
20
+ * Gets the current Y position of the element based on page coordinates. Element must be part of the DOM
21
+ * tree to have page coordinates (display:none or elements not appended return false).
22
+ * @return {Number} The Y position of the element
23
+ */
24
+ getY: function(el) {
25
+ return this.getXY(el)[1];
26
+ },
27
+
28
+ /**
29
+ * Gets the current position of the element based on page coordinates. Element must be part of the DOM
30
+ * tree to have page coordinates (display:none or elements not appended return false).
31
+ * @return {Array} The XY position of the element
32
+ */
33
+ getXY: function() {
34
+ // @FEATUREDETECT
35
+ var point = window.webkitConvertPointFromNodeToPage(this.dom, new WebKitPoint(0, 0));
36
+ return [point.x, point.y];
37
+ },
38
+
39
+ /**
40
+ * Returns the offsets of this element from the passed element. Both element must be part of the DOM
41
+ * tree and not have display:none to have page coordinates.
42
+ * @param {Ext.Element/HTMLElement/String} element The element to get the offsets from.
43
+ * @return {Array} The XY page offsets (e.g. [100, -200])
44
+ */
45
+ getOffsetsTo: function(el){
46
+ var o = this.getXY(),
47
+ e = Ext.fly(el, '_internal').getXY();
48
+ return [o[0]-e[0],o[1]-e[1]];
49
+ },
50
+
51
+ /**
52
+ * Sets the X position of the element based on page coordinates. Element must be part of the DOM tree
53
+ * to have page coordinates (display:none or elements not appended return false).
54
+ * @param {Number} The X position of the element
55
+ * @param {Boolean/Object} [animate] True for the default animation, or a standard Element
56
+ * animation config object
57
+ * @return {Ext.dom.AbstractElement} this
58
+ */
59
+ setX: function(x){
60
+ return this.setXY([x, this.getY()]);
61
+ },
62
+
63
+ /**
64
+ * Sets the Y position of the element based on page coordinates. Element must be part of the DOM tree
65
+ * to have page coordinates (display:none or elements not appended return false).
66
+ * @param {Number} The Y position of the element
67
+ * @param {Boolean/Object} [animate] True for the default animation, or a standard Element
68
+ * animation config object
69
+ * @return {Ext.dom.AbstractElement} this
70
+ */
71
+ setY: function(y) {
72
+ return this.setXY([this.getX(), y]);
73
+ },
74
+
75
+ /**
76
+ * Sets the element's left position directly using CSS style (instead of {@link #setX}).
77
+ * @param {String} left The left CSS property value
78
+ * @return {Ext.dom.AbstractElement} this
79
+ */
80
+ setLeft: function(left) {
81
+ this.setStyle('left', Element.addUnits(left));
82
+ return this;
83
+ },
84
+
85
+ /**
86
+ * Sets the element's top position directly using CSS style (instead of {@link #setY}).
87
+ * @param {String} top The top CSS property value
88
+ * @return {Ext.dom.AbstractElement} this
89
+ */
90
+ setTop: function(top) {
91
+ this.setStyle('top', Element.addUnits(top));
92
+ return this;
93
+ },
94
+
95
+ /**
96
+ * Sets the element's CSS right style.
97
+ * @param {String} right The right CSS property value
98
+ * @return {Ext.dom.AbstractElement} this
99
+ */
100
+ setRight: function(right) {
101
+ this.setStyle('right', Element.addUnits(right));
102
+ return this;
103
+ },
104
+
105
+ /**
106
+ * Sets the element's CSS bottom style.
107
+ * @param {String} bottom The bottom CSS property value
108
+ * @return {Ext.dom.AbstractElement} this
109
+ */
110
+ setBottom: function(bottom) {
111
+ this.setStyle('bottom', Element.addUnits(bottom));
112
+ return this;
113
+ },
114
+
115
+ /**
116
+ * Sets the position of the element in page coordinates, regardless of how the element is positioned.
117
+ * The element must be part of the DOM tree to have page coordinates (display:none or elements not appended return false).
118
+ * @param {Array} pos Contains X & Y [x, y] values for new position (coordinates are page-based)
119
+ * @param {Boolean/Object} [animate] True for the default animation, or a standard Element animation config object
120
+ * @return {Ext.dom.AbstractElement} this
121
+ */
122
+ setXY: function(pos) {
123
+ var me = this,
124
+ pts,
125
+ style,
126
+ pt;
127
+
128
+ if (arguments.length > 1) {
129
+ pos = [pos, arguments[1]];
130
+ }
131
+
132
+ // me.position();
133
+ pts = me.translatePoints(pos);
134
+ style = me.dom.style;
135
+
136
+ for (pt in pts) {
137
+ if (!pts.hasOwnProperty(pt)) {
138
+ continue;
139
+ }
140
+ if (!isNaN(pts[pt])) {
141
+ style[pt] = pts[pt] + "px";
142
+ }
143
+ }
144
+ return me;
145
+ },
146
+
147
+ /**
148
+ * Gets the left X coordinate
149
+ * @param {Boolean} local True to get the local css position instead of page coordinate
150
+ * @return {Number}
151
+ */
152
+ getLeft: function(local) {
153
+ return parseInt(this.getStyle('left'), 10) || 0;
154
+ },
155
+
156
+ /**
157
+ * Gets the right X coordinate of the element (element X position + element width)
158
+ * @param {Boolean} local True to get the local css position instead of page coordinate
159
+ * @return {Number}
160
+ */
161
+ getRight: function(local) {
162
+ return parseInt(this.getStyle('right'), 10) || 0;
163
+ },
164
+
165
+ /**
166
+ * Gets the top Y coordinate
167
+ * @param {Boolean} local True to get the local css position instead of page coordinate
168
+ * @return {Number}
169
+ */
170
+ getTop: function(local) {
171
+ return parseInt(this.getStyle('top'), 10) || 0;
172
+ },
173
+
174
+ /**
175
+ * Gets the bottom Y coordinate of the element (element Y position + element height)
176
+ * @param {Boolean} local True to get the local css position instead of page coordinate
177
+ * @return {Number}
178
+ */
179
+ getBottom: function(local) {
180
+ return parseInt(this.getStyle('bottom'), 10) || 0;
181
+ },
182
+
183
+ /**
184
+ * Translates the passed page coordinates into left/top css values for this element
185
+ * @param {Number/Array} x The page x or an array containing [x, y]
186
+ * @param {Number} [y] The page y, required if x is not an array
187
+ * @return {Object} An object with left and top properties. e.g. {left: (value), top: (value)}
188
+ */
189
+ translatePoints: function(x, y) {
190
+ y = isNaN(x[1]) ? y : x[1];
191
+ x = isNaN(x[0]) ? x : x[0];
192
+ var me = this,
193
+ relative = me.isStyle('position', 'relative'),
194
+ o = me.getXY(),
195
+ l = parseInt(me.getStyle('left'), 10),
196
+ t = parseInt(me.getStyle('top'), 10);
197
+
198
+ l = !isNaN(l) ? l : (relative ? 0 : me.dom.offsetLeft);
199
+ t = !isNaN(t) ? t : (relative ? 0 : me.dom.offsetTop);
200
+
201
+ return {left: (x - o[0] + l), top: (y - o[1] + t)};
202
+ },
203
+
204
+ /**
205
+ * Sets the element's box. Use getBox() on another element to get a box obj.
206
+ * If animate is true then width, height, x and y will be animated concurrently.
207
+ * @param {Object} box The box to fill {x, y, width, height}
208
+ * @param {Boolean} [adjust] Whether to adjust for box-model issues automatically
209
+ * @param {Boolean/Object} [animate] true for the default animation or a standard
210
+ * Element animation config object
211
+ * @return {Ext.dom.AbstractElement} this
212
+ */
213
+ setBox: function(box) {
214
+ var me = this,
215
+ width = box.width,
216
+ height = box.height,
217
+ top = box.top,
218
+ left = box.left;
219
+
220
+ if (left !== undefined) {
221
+ me.setLeft(left);
222
+ }
223
+ if (top !== undefined) {
224
+ me.setTop(top);
225
+ }
226
+ if (width !== undefined) {
227
+ me.setWidth(width);
228
+ }
229
+ if (height !== undefined) {
230
+ me.setHeight(height);
231
+ }
232
+
233
+ return this;
234
+ },
235
+
236
+ /**
237
+ * Return an object defining the area of this Element which can be passed to {@link #setBox} to
238
+ * set another Element's size/location to match this element.
239
+ *
240
+ * @param {Boolean} [contentBox] If true a box for the content of the element is returned.
241
+ * @param {Boolean} [local] If true the element's left and top are returned instead of page x/y.
242
+ * @return {Object} box An object in the format:
243
+ *
244
+ * {
245
+ * x: <Element's X position>,
246
+ * y: <Element's Y position>,
247
+ * width: <Element's width>,
248
+ * height: <Element's height>,
249
+ * bottom: <Element's lower bound>,
250
+ * right: <Element's rightmost bound>
251
+ * }
252
+ *
253
+ * The returned object may also be addressed as an Array where index 0 contains the X position
254
+ * and index 1 contains the Y position. So the result may also be used for {@link #setXY}
255
+ */
256
+ getBox: function(contentBox, local) {
257
+ var me = this,
258
+ dom = me.dom,
259
+ width = dom.offsetWidth,
260
+ height = dom.offsetHeight,
261
+ xy, box, l, r, t, b;
262
+
263
+ if (!local) {
264
+ xy = me.getXY();
265
+ }
266
+ else if (contentBox) {
267
+ xy = [0,0];
268
+ }
269
+ else {
270
+ xy = [parseInt(me.getStyle("left"), 10) || 0, parseInt(me.getStyle("top"), 10) || 0];
271
+ }
272
+
273
+ if (!contentBox) {
274
+ box = {
275
+ x: xy[0],
276
+ y: xy[1],
277
+ 0: xy[0],
278
+ 1: xy[1],
279
+ width: width,
280
+ height: height
281
+ };
282
+ }
283
+ else {
284
+ l = me.getBorderWidth.call(me, "l") + me.getPadding.call(me, "l");
285
+ r = me.getBorderWidth.call(me, "r") + me.getPadding.call(me, "r");
286
+ t = me.getBorderWidth.call(me, "t") + me.getPadding.call(me, "t");
287
+ b = me.getBorderWidth.call(me, "b") + me.getPadding.call(me, "b");
288
+ box = {
289
+ x: xy[0] + l,
290
+ y: xy[1] + t,
291
+ 0: xy[0] + l,
292
+ 1: xy[1] + t,
293
+ width: width - (l + r),
294
+ height: height - (t + b)
295
+ };
296
+ }
297
+
298
+ box.left = box.x;
299
+ box.top = box.y;
300
+ box.right = box.x + box.width;
301
+ box.bottom = box.y + box.height;
302
+
303
+ return box;
304
+ },
305
+
306
+ /**
307
+ * Return an object defining the area of this Element which can be passed to {@link #setBox} to
308
+ * set another Element's size/location to match this element.
309
+ *
310
+ * @param {Boolean} [asRegion] If true an Ext.util.Region will be returned
311
+ * @return {Object} box An object in the format
312
+ *
313
+ * {
314
+ * x: <Element's X position>,
315
+ * y: <Element's Y position>,
316
+ * width: <Element's width>,
317
+ * height: <Element's height>,
318
+ * bottom: <Element's lower bound>,
319
+ * right: <Element's rightmost bound>
320
+ * }
321
+ *
322
+ * The returned object may also be addressed as an Array where index 0 contains the X position
323
+ * and index 1 contains the Y position. So the result may also be used for {@link #setXY}
324
+ */
325
+ getPageBox: function(getRegion) {
326
+ var me = this,
327
+ el = me.dom,
328
+ w = el.offsetWidth,
329
+ h = el.offsetHeight,
330
+ xy = me.getXY(),
331
+ t = xy[1],
332
+ r = xy[0] + w,
333
+ b = xy[1] + h,
334
+ l = xy[0];
335
+
336
+ if (!el) {
337
+ return new Ext.util.Region();
338
+ }
339
+
340
+ if (getRegion) {
341
+ return new Ext.util.Region(t, r, b, l);
342
+ }
343
+ else {
344
+ return {
345
+ left: l,
346
+ top: t,
347
+ width: w,
348
+ height: h,
349
+ right: r,
350
+ bottom: b
351
+ };
352
+ }
353
+ }
354
+ });
355
+
356
+ }());
@@ -0,0 +1,474 @@
1
+ /**
2
+ * @class Ext.dom.AbstractElement
3
+ */
4
+ Ext.dom.AbstractElement.addInheritableStatics({
5
+ unitRe: /\d+(px|em|%|en|ex|pt|in|cm|mm|pc)$/i,
6
+ camelRe: /(-[a-z])/gi,
7
+ cssRe: /([a-z0-9\-]+)\s*:\s*([^;\s]+(?:\s*[^;\s]+)*);?/gi,
8
+ opacityRe: /alpha\(opacity=(.*)\)/i,
9
+ propertyCache: {},
10
+ defaultUnit : "px",
11
+ borders: {l: 'border-left-width', r: 'border-right-width', t: 'border-top-width', b: 'border-bottom-width'},
12
+ paddings: {l: 'padding-left', r: 'padding-right', t: 'padding-top', b: 'padding-bottom'},
13
+ margins: {l: 'margin-left', r: 'margin-right', t: 'margin-top', b: 'margin-bottom'},
14
+ /**
15
+ * Test if size has a unit, otherwise appends the passed unit string, or the default for this Element.
16
+ * @param size {Object} The size to set
17
+ * @param units {String} The units to append to a numeric size value
18
+ * @private
19
+ * @static
20
+ */
21
+ addUnits: function(size, units) {
22
+ // Most common case first: Size is set to a number
23
+ if (typeof size == 'number') {
24
+ return size + (units || this.defaultUnit || 'px');
25
+ }
26
+
27
+ // Size set to a value which means "auto"
28
+ if (size === "" || size == "auto" || size === undefined || size === null) {
29
+ return size || '';
30
+ }
31
+
32
+ // Otherwise, warn if it's not a valid CSS measurement
33
+ if (!this.unitRe.test(size)) {
34
+ //<debug>
35
+ if (Ext.isDefined(Ext.global.console)) {
36
+ Ext.global.console.warn("Warning, size detected as NaN on Element.addUnits.");
37
+ }
38
+ //</debug>
39
+ return size || '';
40
+ }
41
+
42
+ return size;
43
+ },
44
+
45
+ /**
46
+ * @static
47
+ * @private
48
+ */
49
+ isAncestor: function(p, c) {
50
+ var ret = false;
51
+
52
+ p = Ext.getDom(p);
53
+ c = Ext.getDom(c);
54
+ if (p && c) {
55
+ if (p.contains) {
56
+ return p.contains(c);
57
+ } else if (p.compareDocumentPosition) {
58
+ return !!(p.compareDocumentPosition(c) & 16);
59
+ } else {
60
+ while ((c = c.parentNode)) {
61
+ ret = c == p || ret;
62
+ }
63
+ }
64
+ }
65
+ return ret;
66
+ },
67
+
68
+ /**
69
+ * Parses a number or string representing margin sizes into an object. Supports CSS-style margin declarations
70
+ * (e.g. 10, "10", "10 10", "10 10 10" and "10 10 10 10" are all valid options and would return the same result)
71
+ * @static
72
+ * @param {Number/String} box The encoded margins
73
+ * @return {Object} An object with margin sizes for top, right, bottom and left
74
+ */
75
+ parseBox: function(box) {
76
+ if (typeof box != 'string') {
77
+ box = box.toString();
78
+ }
79
+ var parts = box.split(' '),
80
+ ln = parts.length;
81
+
82
+ if (ln == 1) {
83
+ parts[1] = parts[2] = parts[3] = parts[0];
84
+ }
85
+ else if (ln == 2) {
86
+ parts[2] = parts[0];
87
+ parts[3] = parts[1];
88
+ }
89
+ else if (ln == 3) {
90
+ parts[3] = parts[1];
91
+ }
92
+
93
+ return {
94
+ top :parseFloat(parts[0]) || 0,
95
+ right :parseFloat(parts[1]) || 0,
96
+ bottom:parseFloat(parts[2]) || 0,
97
+ left :parseFloat(parts[3]) || 0
98
+ };
99
+ },
100
+
101
+ /**
102
+ * Parses a number or string representing margin sizes into an object. Supports CSS-style margin declarations
103
+ * (e.g. 10, "10", "10 10", "10 10 10" and "10 10 10 10" are all valid options and would return the same result)
104
+ * @static
105
+ * @param {Number/String} box The encoded margins
106
+ * @param {String} units The type of units to add
107
+ * @return {String} An string with unitized (px if units is not specified) metrics for top, right, bottom and left
108
+ */
109
+ unitizeBox: function(box, units) {
110
+ var a = this.addUnits,
111
+ b = this.parseBox(box);
112
+
113
+ return a(b.top, units) + ' ' +
114
+ a(b.right, units) + ' ' +
115
+ a(b.bottom, units) + ' ' +
116
+ a(b.left, units);
117
+
118
+ },
119
+
120
+ // private
121
+ camelReplaceFn: function(m, a) {
122
+ return a.charAt(1).toUpperCase();
123
+ },
124
+
125
+ /**
126
+ * Normalizes CSS property keys from dash delimited to camel case JavaScript Syntax.
127
+ * For example:
128
+ *
129
+ * - border-width -> borderWidth
130
+ * - padding-top -> paddingTop
131
+ *
132
+ * @static
133
+ * @param {String} prop The property to normalize
134
+ * @return {String} The normalized string
135
+ */
136
+ normalize: function(prop) {
137
+ // TODO: Mobile optimization?
138
+ if (prop == 'float') {
139
+ prop = Ext.supports.Float ? 'cssFloat' : 'styleFloat';
140
+ }
141
+ return this.propertyCache[prop] || (this.propertyCache[prop] = prop.replace(this.camelRe, this.camelReplaceFn));
142
+ },
143
+
144
+ /**
145
+ * Retrieves the document height
146
+ * @static
147
+ * @return {Number} documentHeight
148
+ */
149
+ getDocumentHeight: function() {
150
+ return Math.max(!Ext.isStrict ? document.body.scrollHeight : document.documentElement.scrollHeight, this.getViewportHeight());
151
+ },
152
+
153
+ /**
154
+ * Retrieves the document width
155
+ * @static
156
+ * @return {Number} documentWidth
157
+ */
158
+ getDocumentWidth: function() {
159
+ return Math.max(!Ext.isStrict ? document.body.scrollWidth : document.documentElement.scrollWidth, this.getViewportWidth());
160
+ },
161
+
162
+ /**
163
+ * Retrieves the viewport height of the window.
164
+ * @static
165
+ * @return {Number} viewportHeight
166
+ */
167
+ getViewportHeight: function(){
168
+ return window.innerHeight;
169
+ },
170
+
171
+ /**
172
+ * Retrieves the viewport width of the window.
173
+ * @static
174
+ * @return {Number} viewportWidth
175
+ */
176
+ getViewportWidth: function() {
177
+ return window.innerWidth;
178
+ },
179
+
180
+ /**
181
+ * Retrieves the viewport size of the window.
182
+ * @static
183
+ * @return {Object} object containing width and height properties
184
+ */
185
+ getViewSize: function() {
186
+ return {
187
+ width: window.innerWidth,
188
+ height: window.innerHeight
189
+ };
190
+ },
191
+
192
+ /**
193
+ * Retrieves the current orientation of the window. This is calculated by
194
+ * determing if the height is greater than the width.
195
+ * @static
196
+ * @return {String} Orientation of window: 'portrait' or 'landscape'
197
+ */
198
+ getOrientation: function() {
199
+ if (Ext.supports.OrientationChange) {
200
+ return (window.orientation == 0) ? 'portrait' : 'landscape';
201
+ }
202
+
203
+ return (window.innerHeight > window.innerWidth) ? 'portrait' : 'landscape';
204
+ },
205
+
206
+ /**
207
+ * Returns the top Element that is located at the passed coordinates
208
+ * @static
209
+ * @param {Number} x The x coordinate
210
+ * @param {Number} y The y coordinate
211
+ * @return {String} The found Element
212
+ */
213
+ fromPoint: function(x, y) {
214
+ return Ext.get(document.elementFromPoint(x, y));
215
+ },
216
+
217
+ /**
218
+ * Converts a CSS string into an object with a property for each style.
219
+ *
220
+ * The sample code below would return an object with 2 properties, one
221
+ * for background-color and one for color.
222
+ *
223
+ * var css = 'background-color: red;color: blue; ';
224
+ * console.log(Ext.dom.Element.parseStyles(css));
225
+ *
226
+ * @static
227
+ * @param {String} styles A CSS string
228
+ * @return {Object} styles
229
+ */
230
+ parseStyles: function(styles){
231
+ var out = {},
232
+ cssRe = this.cssRe,
233
+ matches;
234
+
235
+ if (styles) {
236
+ // Since we're using the g flag on the regex, we need to set the lastIndex.
237
+ // This automatically happens on some implementations, but not others, see:
238
+ // http://stackoverflow.com/questions/2645273/javascript-regular-expression-literal-persists-between-function-calls
239
+ // http://blog.stevenlevithan.com/archives/fixing-javascript-regexp
240
+ cssRe.lastIndex = 0;
241
+ while ((matches = cssRe.exec(styles))) {
242
+ out[matches[1]] = matches[2];
243
+ }
244
+ }
245
+ return out;
246
+ }
247
+ });
248
+
249
+ //TODO Need serious cleanups
250
+ (function(){
251
+ var doc = document,
252
+ AbstractElement = Ext.dom.AbstractElement,
253
+ activeElement = null,
254
+ isCSS1 = doc.compatMode == "CSS1Compat",
255
+ flyInstance,
256
+ fly = function (el) {
257
+ if (!flyInstance) {
258
+ flyInstance = new AbstractElement.Fly();
259
+ }
260
+ flyInstance.attach(el);
261
+ return flyInstance;
262
+ };
263
+
264
+ // If the browser does not support document.activeElement we need some assistance.
265
+ // This covers old Safari 3.2 (4.0 added activeElement along with just about all
266
+ // other browsers). We need this support to handle issues with old Safari.
267
+ if (!('activeElement' in doc) && doc.addEventListener) {
268
+ doc.addEventListener('focus',
269
+ function (ev) {
270
+ if (ev && ev.target) {
271
+ activeElement = (ev.target == doc) ? null : ev.target;
272
+ }
273
+ }, true);
274
+ }
275
+
276
+ /*
277
+ * Helper function to create the function that will restore the selection.
278
+ */
279
+ function makeSelectionRestoreFn (activeEl, start, end) {
280
+ return function () {
281
+ activeEl.selectionStart = start;
282
+ activeEl.selectionEnd = end;
283
+ };
284
+ }
285
+
286
+ AbstractElement.addInheritableStatics({
287
+ /**
288
+ * Returns the active element in the DOM. If the browser supports activeElement
289
+ * on the document, this is returned. If not, the focus is tracked and the active
290
+ * element is maintained internally.
291
+ * @return {HTMLElement} The active (focused) element in the document.
292
+ */
293
+ getActiveElement: function () {
294
+ return doc.activeElement || activeElement;
295
+ },
296
+
297
+ /**
298
+ * Creates a function to call to clean up problems with the work-around for the
299
+ * WebKit RightMargin bug. The work-around is to add "display: 'inline-block'" to
300
+ * the element before calling getComputedStyle and then to restore its original
301
+ * display value. The problem with this is that it corrupts the selection of an
302
+ * INPUT or TEXTAREA element (as in the "I-beam" goes away but ths focus remains).
303
+ * To cleanup after this, we need to capture the selection of any such element and
304
+ * then restore it after we have restored the display style.
305
+ *
306
+ * @param {Ext.dom.Element} target The top-most element being adjusted.
307
+ * @private
308
+ */
309
+ getRightMarginFixCleaner: function (target) {
310
+ var supports = Ext.supports,
311
+ hasInputBug = supports.DisplayChangeInputSelectionBug,
312
+ hasTextAreaBug = supports.DisplayChangeTextAreaSelectionBug,
313
+ activeEl,
314
+ tag,
315
+ start,
316
+ end;
317
+
318
+ if (hasInputBug || hasTextAreaBug) {
319
+ activeEl = doc.activeElement || activeElement; // save a call
320
+ tag = activeEl && activeEl.tagName;
321
+
322
+ if ((hasTextAreaBug && tag == 'TEXTAREA') ||
323
+ (hasInputBug && tag == 'INPUT' && activeEl.type == 'text')) {
324
+ if (Ext.dom.Element.isAncestor(target, activeEl)) {
325
+ start = activeEl.selectionStart;
326
+ end = activeEl.selectionEnd;
327
+
328
+ if (Ext.isNumber(start) && Ext.isNumber(end)) { // to be safe...
329
+ // We don't create the raw closure here inline because that
330
+ // will be costly even if we don't want to return it (nested
331
+ // function decls and exprs are often instantiated on entry
332
+ // regardless of whether execution ever reaches them):
333
+ return makeSelectionRestoreFn(activeEl, start, end);
334
+ }
335
+ }
336
+ }
337
+ }
338
+
339
+ return Ext.emptyFn; // avoid special cases, just return a nop
340
+ },
341
+
342
+ getViewWidth: function(full) {
343
+ return full ? Ext.dom.Element.getDocumentWidth() : Ext.dom.Element.getViewportWidth();
344
+ },
345
+
346
+ getViewHeight: function(full) {
347
+ return full ? Ext.dom.Element.getDocumentHeight() : Ext.dom.Element.getViewportHeight();
348
+ },
349
+
350
+ getDocumentHeight: function() {
351
+ return Math.max(!isCSS1 ? doc.body.scrollHeight : doc.documentElement.scrollHeight, Ext.dom.Element.getViewportHeight());
352
+ },
353
+
354
+ getDocumentWidth: function() {
355
+ return Math.max(!isCSS1 ? doc.body.scrollWidth : doc.documentElement.scrollWidth, Ext.dom.Element.getViewportWidth());
356
+ },
357
+
358
+ getViewportHeight: function(){
359
+ return Ext.isIE ?
360
+ (Ext.isStrict ? doc.documentElement.clientHeight : doc.body.clientHeight) :
361
+ self.innerHeight;
362
+ },
363
+
364
+ getViewportWidth: function() {
365
+ return (!Ext.isStrict && !Ext.isOpera) ? doc.body.clientWidth :
366
+ Ext.isIE ? doc.documentElement.clientWidth : self.innerWidth;
367
+ },
368
+
369
+ getY: function(el) {
370
+ return Ext.dom.Element.getXY(el)[1];
371
+ },
372
+
373
+ getX: function(el) {
374
+ return Ext.dom.Element.getXY(el)[0];
375
+ },
376
+
377
+ getXY: function(el) {
378
+ var bd = doc.body,
379
+ docEl = doc.documentElement,
380
+ leftBorder = 0,
381
+ topBorder = 0,
382
+ ret = [0,0],
383
+ round = Math.round,
384
+ box,
385
+ scroll;
386
+
387
+ el = Ext.getDom(el);
388
+
389
+ if(el != doc && el != bd){
390
+ // IE has the potential to throw when getBoundingClientRect called
391
+ // on element not attached to dom
392
+ if (Ext.isIE) {
393
+ try {
394
+ box = el.getBoundingClientRect();
395
+ // In some versions of IE, the documentElement (HTML element) will have a 2px border that gets included, so subtract it off
396
+ topBorder = docEl.clientTop || bd.clientTop;
397
+ leftBorder = docEl.clientLeft || bd.clientLeft;
398
+ } catch (ex) {
399
+ box = { left: 0, top: 0 };
400
+ }
401
+ } else {
402
+ box = el.getBoundingClientRect();
403
+ }
404
+
405
+ scroll = fly(document).getScroll();
406
+ ret = [round(box.left + scroll.left - leftBorder), round(box.top + scroll.top - topBorder)];
407
+ }
408
+ return ret;
409
+ },
410
+
411
+ setXY: function(el, xy) {
412
+ (el = Ext.fly(el, '_setXY')).position();
413
+
414
+ var pts = el.translatePoints(xy),
415
+ style = el.dom.style,
416
+ pos;
417
+
418
+ for (pos in pts) {
419
+ if (!isNaN(pts[pos])) {
420
+ style[pos] = pts[pos] + "px";
421
+ }
422
+ }
423
+ },
424
+
425
+ setX: function(el, x) {
426
+ Ext.dom.Element.setXY(el, [x, false]);
427
+ },
428
+
429
+ setY: function(el, y) {
430
+ Ext.dom.Element.setXY(el, [false, y]);
431
+ },
432
+
433
+ /**
434
+ * Serializes a DOM form into a url encoded string
435
+ * @param {Object} form The form
436
+ * @return {String} The url encoded form
437
+ */
438
+ serializeForm: function(form) {
439
+ var fElements = form.elements || (document.forms[form] || Ext.getDom(form)).elements,
440
+ hasSubmit = false,
441
+ encoder = encodeURIComponent,
442
+ data = '',
443
+ eLen = fElements.length,
444
+ element, name, type, options, hasValue, e,
445
+ o, oLen, opt;
446
+
447
+ for (e = 0; e < eLen; e++) {
448
+ element = fElements[e];
449
+ name = element.name;
450
+ type = element.type;
451
+ options = element.options;
452
+
453
+ if (!element.disabled && name) {
454
+ if (/select-(one|multiple)/i.test(type)) {
455
+ oLen = options.length;
456
+ for (o = 0; o < oLen; o++) {
457
+ opt = options[o];
458
+ if (opt.selected) {
459
+ hasValue = opt.hasAttribute ? opt.hasAttribute('value') : opt.getAttributeNode('value').specified;
460
+ data += Ext.String.format("{0}={1}&", encoder(name), encoder(hasValue ? opt.value : opt.text));
461
+ }
462
+ }
463
+ } else if (!(/file|undefined|reset|button/i.test(type))) {
464
+ if (!(/radio|checkbox/i.test(type) && !element.checked) && !(type == 'submit' && hasSubmit)) {
465
+ data += encoder(name) + '=' + encoder(element.value) + '&';
466
+ hasSubmit = /submit/i.test(type);
467
+ }
468
+ }
469
+ }
470
+ }
471
+ return data.substr(0, data.length - 1);
472
+ }
473
+ });
474
+ }());