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,851 @@
1
+ /**
2
+ * @class Ext.dom.AbstractElement
3
+ */
4
+ (function(){
5
+ // local style camelizing for speed
6
+ var Element = Ext.dom.AbstractElement,
7
+ view = document.defaultView,
8
+ array = Ext.Array,
9
+ trimRe = /^\s+|\s+$/g,
10
+ wordsRe = /\w/g,
11
+ spacesRe = /\s+/,
12
+ transparentRe = /^(?:transparent|(?:rgba[(](?:\s*\d+\s*[,]){3}\s*0\s*[)]))$/i,
13
+ hasClassList = Ext.supports.ClassList,
14
+ PADDING = 'padding',
15
+ MARGIN = 'margin',
16
+ BORDER = 'border',
17
+ LEFT_SUFFIX = '-left',
18
+ RIGHT_SUFFIX = '-right',
19
+ TOP_SUFFIX = '-top',
20
+ BOTTOM_SUFFIX = '-bottom',
21
+ WIDTH = '-width',
22
+ // special markup used throughout Ext when box wrapping elements
23
+ borders = {l: BORDER + LEFT_SUFFIX + WIDTH, r: BORDER + RIGHT_SUFFIX + WIDTH, t: BORDER + TOP_SUFFIX + WIDTH, b: BORDER + BOTTOM_SUFFIX + WIDTH},
24
+ paddings = {l: PADDING + LEFT_SUFFIX, r: PADDING + RIGHT_SUFFIX, t: PADDING + TOP_SUFFIX, b: PADDING + BOTTOM_SUFFIX},
25
+ margins = {l: MARGIN + LEFT_SUFFIX, r: MARGIN + RIGHT_SUFFIX, t: MARGIN + TOP_SUFFIX, b: MARGIN + BOTTOM_SUFFIX};
26
+
27
+
28
+ Element.override({
29
+
30
+ /**
31
+ * This shared object is keyed by style name (e.g., 'margin-left' or 'marginLeft'). The
32
+ * values are objects with the following properties:
33
+ *
34
+ * * `name` (String) : The actual name to be presented to the DOM. This is typically the value
35
+ * returned by {@link #normalize}.
36
+ * * `get` (Function) : A hook function that will perform the get on this style. These
37
+ * functions receive "(dom, el)" arguments. The `dom` parameter is the DOM Element
38
+ * from which to get ths tyle. The `el` argument (may be null) is the Ext.Element.
39
+ * * `set` (Function) : A hook function that will perform the set on this style. These
40
+ * functions receive "(dom, value, el)" arguments. The `dom` parameter is the DOM Element
41
+ * from which to get ths tyle. The `value` parameter is the new value for the style. The
42
+ * `el` argument (may be null) is the Ext.Element.
43
+ *
44
+ * The `this` pointer is the object that contains `get` or `set`, which means that
45
+ * `this.name` can be accessed if needed. The hook functions are both optional.
46
+ * @private
47
+ */
48
+ styleHooks: {},
49
+
50
+ // private
51
+ addStyles : function(sides, styles){
52
+ var totalSize = 0,
53
+ sidesArr = (sides || '').match(wordsRe),
54
+ i,
55
+ len = sidesArr.length,
56
+ side,
57
+ styleSides = [];
58
+
59
+ if (len == 1) {
60
+ totalSize = Math.abs(parseFloat(this.getStyle(styles[sidesArr[0]])) || 0);
61
+ } else if (len) {
62
+ for (i = 0; i < len; i++) {
63
+ side = sidesArr[i];
64
+ styleSides.push(styles[side]);
65
+ }
66
+ //Gather all at once, returning a hash
67
+ styleSides = this.getStyle(styleSides);
68
+
69
+ for (i=0; i < len; i++) {
70
+ side = sidesArr[i];
71
+ totalSize += Math.abs(parseFloat(styleSides[styles[side]]) || 0);
72
+ }
73
+ }
74
+
75
+ return totalSize;
76
+ },
77
+
78
+ /**
79
+ * Adds one or more CSS classes to the element. Duplicate classes are automatically filtered out.
80
+ * @param {String/String[]} className The CSS classes to add separated by space, or an array of classes
81
+ * @return {Ext.dom.Element} this
82
+ * @method
83
+ */
84
+ addCls: hasClassList ?
85
+ function (className) {
86
+ //<debug warn>
87
+ if (String(className).indexOf('undefined') > -1) {
88
+ Ext.Logger.warn("called with an undefined className: " + className);
89
+ }
90
+ //</debug>
91
+ var me = this,
92
+ dom = me.dom,
93
+ classList,
94
+ newCls,
95
+ i,
96
+ len,
97
+ cls;
98
+
99
+ if (typeof(className) == 'string') {
100
+ // split string on spaces to make an array of className
101
+ className = className.replace(trimRe, '').split(spacesRe);
102
+ }
103
+
104
+ // the gain we have here is that we can skip parsing className and use the
105
+ // classList.contains method, so now O(M) not O(M+N)
106
+ if (dom && className && !!(len = className.length)) {
107
+ if (!dom.className) {
108
+ dom.className = className.join(' ');
109
+ } else {
110
+ classList = dom.classList;
111
+ for (i = 0; i < len; ++i) {
112
+ cls = className[i];
113
+ if (cls) {
114
+ if (!classList.contains(cls)) {
115
+ if (newCls) {
116
+ newCls.push(cls);
117
+ } else {
118
+ newCls = dom.className.replace(trimRe, '');
119
+ newCls = newCls ? [newCls, cls] : [cls];
120
+ }
121
+ }
122
+ }
123
+ }
124
+
125
+ if (newCls) {
126
+ dom.className = newCls.join(' '); // write to DOM once
127
+ }
128
+ }
129
+ }
130
+ return me;
131
+ } :
132
+ function(className) {
133
+ //<debug warn>
134
+ if (String(className).indexOf('undefined') > -1) {
135
+ Ext.Logger.warn("called with an undefined className: '" + className + "'");
136
+ }
137
+ //</debug>
138
+ var me = this,
139
+ dom = me.dom,
140
+ changed,
141
+ elClasses;
142
+
143
+ if (dom && className && className.length) {
144
+ elClasses = Ext.Element.mergeClsList(dom.className, className);
145
+ if (elClasses.changed) {
146
+ dom.className = elClasses.join(' '); // write to DOM once
147
+ }
148
+ }
149
+ return me;
150
+ },
151
+
152
+
153
+ /**
154
+ * Removes one or more CSS classes from the element.
155
+ * @param {String/String[]} className The CSS classes to remove separated by space, or an array of classes
156
+ * @return {Ext.dom.Element} this
157
+ */
158
+ removeCls: function(className) {
159
+ var me = this,
160
+ dom = me.dom,
161
+ len,
162
+ elClasses;
163
+
164
+ if (typeof(className) == 'string') {
165
+ // split string on spaces to make an array of className
166
+ className = className.replace(trimRe, '').split(spacesRe);
167
+ }
168
+
169
+ if (dom && dom.className && className && !!(len = className.length)) {
170
+ if (len == 1 && hasClassList) {
171
+ if (className[0]) {
172
+ dom.classList.remove(className[0]); // one DOM write
173
+ }
174
+ } else {
175
+ elClasses = Ext.Element.removeCls(dom.className, className);
176
+ if (elClasses.changed) {
177
+ dom.className = elClasses.join(' ');
178
+ }
179
+ }
180
+ }
181
+ return me;
182
+ },
183
+
184
+ /**
185
+ * Adds one or more CSS classes to this element and removes the same class(es) from all siblings.
186
+ * @param {String/String[]} className The CSS class to add, or an array of classes
187
+ * @return {Ext.dom.Element} this
188
+ */
189
+ radioCls: function(className) {
190
+ var cn = this.dom.parentNode.childNodes,
191
+ v,
192
+ i, len;
193
+ className = Ext.isArray(className) ? className: [className];
194
+ for (i = 0, len = cn.length; i < len; i++) {
195
+ v = cn[i];
196
+ if (v && v.nodeType == 1) {
197
+ Ext.fly(v, '_internal').removeCls(className);
198
+ }
199
+ }
200
+ return this.addCls(className);
201
+ },
202
+
203
+ /**
204
+ * Toggles the specified CSS class on this element (removes it if it already exists, otherwise adds it).
205
+ * @param {String} className The CSS class to toggle
206
+ * @return {Ext.dom.Element} this
207
+ * @method
208
+ */
209
+ toggleCls: hasClassList ?
210
+ function (className) {
211
+ var me = this,
212
+ dom = me.dom;
213
+
214
+ if (dom) {
215
+ className = className.replace(trimRe, '');
216
+ if (className) {
217
+ dom.classList.toggle(className);
218
+ }
219
+ }
220
+
221
+ return me;
222
+ } :
223
+ function(className) {
224
+ var me = this;
225
+ return me.hasCls(className) ? me.removeCls(className) : me.addCls(className);
226
+ },
227
+
228
+ /**
229
+ * Checks if the specified CSS class exists on this element's DOM node.
230
+ * @param {String} className The CSS class to check for
231
+ * @return {Boolean} True if the class exists, else false
232
+ * @method
233
+ */
234
+ hasCls: hasClassList ?
235
+ function (className) {
236
+ var dom = this.dom;
237
+ return (dom && className) ? dom.classList.contains(className) : false;
238
+ } :
239
+ function(className) {
240
+ var dom = this.dom;
241
+ return dom ? className && (' '+dom.className+' ').indexOf(' '+className+' ') != -1 : false;
242
+ },
243
+
244
+ /**
245
+ * Replaces a CSS class on the element with another. If the old name does not exist, the new name will simply be added.
246
+ * @param {String} oldClassName The CSS class to replace
247
+ * @param {String} newClassName The replacement CSS class
248
+ * @return {Ext.dom.Element} this
249
+ */
250
+ replaceCls: function(oldClassName, newClassName){
251
+ return this.removeCls(oldClassName).addCls(newClassName);
252
+ },
253
+
254
+ /**
255
+ * Checks if the current value of a style is equal to a given value.
256
+ * @param {String} style property whose value is returned.
257
+ * @param {String} value to check against.
258
+ * @return {Boolean} true for when the current value equals the given value.
259
+ */
260
+ isStyle: function(style, val) {
261
+ return this.getStyle(style) == val;
262
+ },
263
+
264
+ /**
265
+ * Returns a named style property based on computed/currentStyle (primary) and
266
+ * inline-style if primary is not available.
267
+ *
268
+ * @param {String/String[]} property The style property (or multiple property names
269
+ * in an array) whose value is returned.
270
+ * @param {Boolean} [inline=false] if `true` only inline styles will be returned.
271
+ * @return {String/Object} The current value of the style property for this element
272
+ * (or a hash of named style values if multiple property arguments are requested).
273
+ * @method
274
+ */
275
+ getStyle: function (property, inline) {
276
+ var me = this,
277
+ dom = me.dom,
278
+ multiple = typeof property != 'string',
279
+ hooks = me.styleHooks,
280
+ prop = property,
281
+ props = prop,
282
+ len = 1,
283
+ domStyle, camel, values, hook, out, style, i;
284
+
285
+ if (multiple) {
286
+ values = {};
287
+ prop = props[0];
288
+ i = 0;
289
+ if (!(len = props.length)) {
290
+ return values;
291
+ }
292
+ }
293
+
294
+ if (!dom || dom.documentElement) {
295
+ return values || '';
296
+ }
297
+
298
+ domStyle = dom.style;
299
+
300
+ if (inline) {
301
+ style = domStyle;
302
+ } else {
303
+ // Caution: Firefox will not render "presentation" (ie. computed styles) in
304
+ // iframes that are display:none or those inheriting display:none. Similar
305
+ // issues with legacy Safari.
306
+ //
307
+ style = dom.ownerDocument.defaultView.getComputedStyle(dom, null);
308
+
309
+ // fallback to inline style if rendering context not available
310
+ if (!style) {
311
+ inline = true;
312
+ style = domStyle;
313
+ }
314
+ }
315
+
316
+ do {
317
+ hook = hooks[prop];
318
+
319
+ if (!hook) {
320
+ hooks[prop] = hook = { name: Element.normalize(prop) };
321
+ }
322
+
323
+ if (hook.get) {
324
+ out = hook.get(dom, me, inline, style);
325
+ } else {
326
+ camel = hook.name;
327
+ out = style[camel];
328
+ }
329
+
330
+ if (!multiple) {
331
+ return out;
332
+ }
333
+
334
+ values[prop] = out;
335
+ prop = props[++i];
336
+ } while (i < len);
337
+
338
+ return values;
339
+ },
340
+
341
+ getStyles: function () {
342
+ var props = Ext.Array.slice(arguments),
343
+ len = props.length,
344
+ inline;
345
+
346
+ if (len && typeof props[len-1] == 'boolean') {
347
+ inline = props.pop();
348
+ }
349
+
350
+ return this.getStyle(props, inline);
351
+ },
352
+
353
+ /**
354
+ * Returns true if the value of the given property is visually transparent. This
355
+ * may be due to a 'transparent' style value or an rgba value with 0 in the alpha
356
+ * component.
357
+ * @param {String} prop The style property whose value is to be tested.
358
+ * @return {Boolean} True if the style property is visually transparent.
359
+ */
360
+ isTransparent: function (prop) {
361
+ var value = this.getStyle(prop);
362
+ return value ? transparentRe.test(value) : false;
363
+ },
364
+
365
+ /**
366
+ * Wrapper for setting style properties, also takes single object parameter of multiple styles.
367
+ * @param {String/Object} property The style property to be set, or an object of multiple styles.
368
+ * @param {String} [value] The value to apply to the given property, or null if an object was passed.
369
+ * @return {Ext.dom.Element} this
370
+ */
371
+ setStyle: function(prop, value) {
372
+ var me = this,
373
+ dom = me.dom,
374
+ hooks = me.styleHooks,
375
+ style = dom.style,
376
+ name = prop,
377
+ hook;
378
+
379
+ // we don't promote the 2-arg form to object-form to avoid the overhead...
380
+ if (typeof name == 'string') {
381
+ hook = hooks[name];
382
+ if (!hook) {
383
+ hooks[name] = hook = { name: Element.normalize(name) };
384
+ }
385
+ value = (value == null) ? '' : value;
386
+ if (hook.set) {
387
+ hook.set(dom, value, me);
388
+ } else {
389
+ style[hook.name] = value;
390
+ }
391
+ if (hook.afterSet) {
392
+ hook.afterSet(dom, value, me);
393
+ }
394
+ } else {
395
+ for (name in prop) {
396
+ if (prop.hasOwnProperty(name)) {
397
+ hook = hooks[name];
398
+ if (!hook) {
399
+ hooks[name] = hook = { name: Element.normalize(name) };
400
+ }
401
+ value = prop[name];
402
+ value = (value == null) ? '' : value;
403
+ if (hook.set) {
404
+ hook.set(dom, value, me);
405
+ } else {
406
+ style[hook.name] = value;
407
+ }
408
+ if (hook.afterSet) {
409
+ hook.afterSet(dom, value, me);
410
+ }
411
+ }
412
+ }
413
+ }
414
+
415
+ return me;
416
+ },
417
+
418
+ /**
419
+ * Returns the offset height of the element
420
+ * @param {Boolean} [contentHeight] true to get the height minus borders and padding
421
+ * @return {Number} The element's height
422
+ */
423
+ getHeight: function(contentHeight) {
424
+ var dom = this.dom,
425
+ height = contentHeight ? (dom.clientHeight - this.getPadding("tb")) : dom.offsetHeight;
426
+ return height > 0 ? height: 0;
427
+ },
428
+
429
+ /**
430
+ * Returns the offset width of the element
431
+ * @param {Boolean} [contentWidth] true to get the width minus borders and padding
432
+ * @return {Number} The element's width
433
+ */
434
+ getWidth: function(contentWidth) {
435
+ var dom = this.dom,
436
+ width = contentWidth ? (dom.clientWidth - this.getPadding("lr")) : dom.offsetWidth;
437
+ return width > 0 ? width: 0;
438
+ },
439
+
440
+ /**
441
+ * Set the width of this Element.
442
+ * @param {Number/String} width The new width. This may be one of:
443
+ *
444
+ * - A Number specifying the new width in this Element's {@link #defaultUnit}s (by default, pixels).
445
+ * - A String used to set the CSS width style. Animation may **not** be used.
446
+ *
447
+ * @param {Boolean/Object} [animate] true for the default animation or a standard Element animation config object
448
+ * @return {Ext.dom.Element} this
449
+ */
450
+ setWidth: function(width) {
451
+ var me = this;
452
+ me.dom.style.width = Element.addUnits(width);
453
+ return me;
454
+ },
455
+
456
+ /**
457
+ * Set the height of this Element.
458
+ *
459
+ * // change the height to 200px and animate with default configuration
460
+ * Ext.fly('elementId').setHeight(200, true);
461
+ *
462
+ * // change the height to 150px and animate with a custom configuration
463
+ * Ext.fly('elId').setHeight(150, {
464
+ * duration : .5, // animation will have a duration of .5 seconds
465
+ * // will change the content to "finished"
466
+ * callback: function(){ this.{@link #update}("finished"); }
467
+ * });
468
+ *
469
+ * @param {Number/String} height The new height. This may be one of:
470
+ *
471
+ * - A Number specifying the new height in this Element's {@link #defaultUnit}s (by default, pixels.)
472
+ * - A String used to set the CSS height style. Animation may **not** be used.
473
+ *
474
+ * @param {Boolean/Object} [animate] true for the default animation or a standard Element animation config object
475
+ * @return {Ext.dom.Element} this
476
+ */
477
+ setHeight: function(height) {
478
+ var me = this;
479
+ me.dom.style.height = Element.addUnits(height);
480
+ return me;
481
+ },
482
+
483
+ /**
484
+ * Gets the width of the border(s) for the specified side(s)
485
+ * @param {String} side Can be t, l, r, b or any combination of those to add multiple values. For example,
486
+ * passing `'lr'` would get the border **l**eft width + the border **r**ight width.
487
+ * @return {Number} The width of the sides passed added together
488
+ */
489
+ getBorderWidth: function(side){
490
+ return this.addStyles(side, borders);
491
+ },
492
+
493
+ /**
494
+ * Gets the width of the padding(s) for the specified side(s)
495
+ * @param {String} side Can be t, l, r, b or any combination of those to add multiple values. For example,
496
+ * passing `'lr'` would get the padding **l**eft + the padding **r**ight.
497
+ * @return {Number} The padding of the sides passed added together
498
+ */
499
+ getPadding: function(side){
500
+ return this.addStyles(side, paddings);
501
+ },
502
+
503
+ margins : margins,
504
+
505
+ /**
506
+ * More flexible version of {@link #setStyle} for setting style properties.
507
+ * @param {String/Object/Function} styles A style specification string, e.g. "width:100px", or object in the form {width:"100px"}, or
508
+ * a function which returns such a specification.
509
+ * @return {Ext.dom.Element} this
510
+ */
511
+ applyStyles: function(styles) {
512
+ if (styles) {
513
+ var i,
514
+ len,
515
+ dom = this.dom;
516
+
517
+ if (typeof styles == 'function') {
518
+ styles = styles.call();
519
+ }
520
+ if (typeof styles == 'string') {
521
+ styles = Ext.util.Format.trim(styles).split(/\s*(?::|;)\s*/);
522
+ for (i = 0, len = styles.length; i < len;) {
523
+ dom.style[Element.normalize(styles[i++])] = styles[i++];
524
+ }
525
+ }
526
+ else if (typeof styles == 'object') {
527
+ this.setStyle(styles);
528
+ }
529
+ }
530
+ },
531
+
532
+ /**
533
+ * Set the size of this Element. If animation is true, both width and height will be animated concurrently.
534
+ * @param {Number/String} width The new width. This may be one of:
535
+ *
536
+ * - A Number specifying the new width in this Element's {@link #defaultUnit}s (by default, pixels).
537
+ * - A String used to set the CSS width style. Animation may **not** be used.
538
+ * - A size object in the format `{width: widthValue, height: heightValue}`.
539
+ *
540
+ * @param {Number/String} height The new height. This may be one of:
541
+ *
542
+ * - A Number specifying the new height in this Element's {@link #defaultUnit}s (by default, pixels).
543
+ * - A String used to set the CSS height style. Animation may **not** be used.
544
+ *
545
+ * @param {Boolean/Object} [animate] true for the default animation or a standard Element animation config object
546
+ * @return {Ext.dom.Element} this
547
+ */
548
+ setSize: function(width, height) {
549
+ var me = this,
550
+ style = me.dom.style;
551
+
552
+ if (Ext.isObject(width)) {
553
+ // in case of object from getSize()
554
+ height = width.height;
555
+ width = width.width;
556
+ }
557
+
558
+ style.width = Element.addUnits(width);
559
+ style.height = Element.addUnits(height);
560
+ return me;
561
+ },
562
+
563
+ /**
564
+ * Returns the dimensions of the element available to lay content out in.
565
+ *
566
+ * If the element (or any ancestor element) has CSS style `display: none`, the dimensions will be zero.
567
+ *
568
+ * Example:
569
+ *
570
+ * var vpSize = Ext.getBody().getViewSize();
571
+ *
572
+ * // all Windows created afterwards will have a default value of 90% height and 95% width
573
+ * Ext.Window.override({
574
+ * width: vpSize.width * 0.9,
575
+ * height: vpSize.height * 0.95
576
+ * });
577
+ * // To handle window resizing you would have to hook onto onWindowResize.
578
+ *
579
+ * getViewSize utilizes clientHeight/clientWidth which excludes sizing of scrollbars.
580
+ * To obtain the size including scrollbars, use getStyleSize
581
+ *
582
+ * Sizing of the document body is handled at the adapter level which handles special cases for IE and strict modes, etc.
583
+ *
584
+ * @return {Object} Object describing width and height.
585
+ * @return {Number} return.width
586
+ * @return {Number} return.height
587
+ */
588
+ getViewSize: function() {
589
+ var doc = document,
590
+ dom = this.dom;
591
+
592
+ if (dom == doc || dom == doc.body) {
593
+ return {
594
+ width: Element.getViewportWidth(),
595
+ height: Element.getViewportHeight()
596
+ };
597
+ }
598
+ else {
599
+ return {
600
+ width: dom.clientWidth,
601
+ height: dom.clientHeight
602
+ };
603
+ }
604
+ },
605
+
606
+ /**
607
+ * Returns the size of the element.
608
+ * @param {Boolean} [contentSize] true to get the width/size minus borders and padding
609
+ * @return {Object} An object containing the element's size:
610
+ * @return {Number} return.width
611
+ * @return {Number} return.height
612
+ */
613
+ getSize: function(contentSize) {
614
+ var dom = this.dom;
615
+ return {
616
+ width: Math.max(0, contentSize ? (dom.clientWidth - this.getPadding("lr")) : dom.offsetWidth),
617
+ height: Math.max(0, contentSize ? (dom.clientHeight - this.getPadding("tb")) : dom.offsetHeight)
618
+ };
619
+ },
620
+
621
+ /**
622
+ * Forces the browser to repaint this element
623
+ * @return {Ext.dom.Element} this
624
+ */
625
+ repaint: function(){
626
+ var dom = this.dom;
627
+ this.addCls(Ext.baseCSSPrefix + 'repaint');
628
+ setTimeout(function(){
629
+ Ext.fly(dom).removeCls(Ext.baseCSSPrefix + 'repaint');
630
+ }, 1);
631
+ return this;
632
+ },
633
+
634
+ /**
635
+ * Returns an object with properties top, left, right and bottom representing the margins of this element unless sides is passed,
636
+ * then it returns the calculated width of the sides (see getPadding)
637
+ * @param {String} [sides] Any combination of l, r, t, b to get the sum of those sides
638
+ * @return {Object/Number}
639
+ */
640
+ getMargin: function(side){
641
+ var me = this,
642
+ hash = {t:"top", l:"left", r:"right", b: "bottom"},
643
+ key,
644
+ o,
645
+ margins;
646
+
647
+ if (!side) {
648
+ margins = [];
649
+ for (key in me.margins) {
650
+ if(me.margins.hasOwnProperty(key)) {
651
+ margins.push(me.margins[key]);
652
+ }
653
+ }
654
+ o = me.getStyle(margins);
655
+ if(o && typeof o == 'object') {
656
+ //now mixin nomalized values (from hash table)
657
+ for (key in me.margins) {
658
+ if(me.margins.hasOwnProperty(key)) {
659
+ o[hash[key]] = parseFloat(o[me.margins[key]]) || 0;
660
+ }
661
+ }
662
+ }
663
+
664
+ return o;
665
+ } else {
666
+ return me.addStyles.call(me, side, me.margins);
667
+ }
668
+ },
669
+
670
+ /**
671
+ * Puts a mask over this element to disable user interaction. Requires core.css.
672
+ * This method can only be applied to elements which accept child nodes.
673
+ * @param {String} [msg] A message to display in the mask
674
+ * @param {String} [msgCls] A css class to apply to the msg element
675
+ */
676
+ mask: function(msg, msgCls, transparent) {
677
+ var me = this,
678
+ dom = me.dom,
679
+ data = (me.$cache || me.getCache()).data,
680
+ el = data.mask,
681
+ mask,
682
+ size,
683
+ cls = '',
684
+ prefix = Ext.baseCSSPrefix;
685
+
686
+ me.addCls(prefix + 'masked');
687
+ if (me.getStyle("position") == "static") {
688
+ me.addCls(prefix + 'masked-relative');
689
+ }
690
+ if (el) {
691
+ el.remove();
692
+ }
693
+ if (msgCls && typeof msgCls == 'string' ) {
694
+ cls = ' ' + msgCls;
695
+ }
696
+ else {
697
+ cls = ' ' + prefix + 'mask-gray';
698
+ }
699
+
700
+ mask = me.createChild({
701
+ cls: prefix + 'mask' + ((transparent !== false) ? '' : (' ' + prefix + 'mask-gray')),
702
+ html: msg ? ('<div class="' + (msgCls || (prefix + 'mask-message')) + '">' + msg + '</div>') : ''
703
+ });
704
+
705
+ size = me.getSize();
706
+
707
+ data.mask = mask;
708
+
709
+ if (dom === document.body) {
710
+ size.height = window.innerHeight;
711
+ if (me.orientationHandler) {
712
+ Ext.EventManager.unOrientationChange(me.orientationHandler, me);
713
+ }
714
+
715
+ me.orientationHandler = function() {
716
+ size = me.getSize();
717
+ size.height = window.innerHeight;
718
+ mask.setSize(size);
719
+ };
720
+
721
+ Ext.EventManager.onOrientationChange(me.orientationHandler, me);
722
+ }
723
+ mask.setSize(size);
724
+ if (Ext.is.iPad) {
725
+ Ext.repaint();
726
+ }
727
+ },
728
+
729
+ /**
730
+ * Removes a previously applied mask.
731
+ */
732
+ unmask: function() {
733
+ var me = this,
734
+ data = (me.$cache || me.getCache()).data,
735
+ mask = data.mask,
736
+ prefix = Ext.baseCSSPrefix;
737
+
738
+ if (mask) {
739
+ mask.remove();
740
+ delete data.mask;
741
+ }
742
+ me.removeCls([prefix + 'masked', prefix + 'masked-relative']);
743
+
744
+ if (me.dom === document.body) {
745
+ Ext.EventManager.unOrientationChange(me.orientationHandler, me);
746
+ delete me.orientationHandler;
747
+ }
748
+ }
749
+ });
750
+
751
+ /**
752
+ * Creates mappings for 'margin-before' to 'marginLeft' (etc.) given the output
753
+ * map and an ordering pair (e.g., ['left', 'right']). The ordering pair is in
754
+ * before/after order.
755
+ */
756
+ Element.populateStyleMap = function (map, order) {
757
+ var baseStyles = ['margin-', 'padding-', 'border-width-'],
758
+ beforeAfter = ['before', 'after'],
759
+ index, style, name, i;
760
+
761
+ for (index = baseStyles.length; index--; ) {
762
+ for (i = 2; i--; ) {
763
+ style = baseStyles[index] + beforeAfter[i]; // margin-before
764
+ // ex: maps margin-before and marginBefore to marginLeft
765
+ map[Element.normalize(style)] = map[style] = {
766
+ name: Element.normalize(baseStyles[index] + order[i])
767
+ };
768
+ }
769
+ }
770
+ };
771
+
772
+ Ext.onReady(function () {
773
+ var supports = Ext.supports,
774
+ styleHooks,
775
+ colorStyles, i, name, camel;
776
+
777
+ function fixTransparent (dom, el, inline, style) {
778
+ var value = style[this.name] || '';
779
+ return transparentRe.test(value) ? 'transparent' : value;
780
+ }
781
+
782
+ function fixRightMargin (dom, el, inline, style) {
783
+ var result = style.marginRight,
784
+ domStyle, display;
785
+
786
+ // Ignore cases when the margin is correctly reported as 0, the bug only shows
787
+ // numbers larger.
788
+ if (result != '0px') {
789
+ domStyle = dom.style;
790
+ display = domStyle.display;
791
+ domStyle.display = 'inline-block';
792
+ result = (inline ? style : dom.ownerDocument.defaultView.getComputedStyle(dom, null)).marginRight;
793
+ domStyle.display = display;
794
+ }
795
+
796
+ return result;
797
+ }
798
+
799
+ function fixRightMarginAndInputFocus (dom, el, inline, style) {
800
+ var result = style.marginRight,
801
+ domStyle, cleaner, display;
802
+
803
+ if (result != '0px') {
804
+ domStyle = dom.style;
805
+ cleaner = Element.getRightMarginFixCleaner(dom);
806
+ display = domStyle.display;
807
+ domStyle.display = 'inline-block';
808
+ result = (inline ? style : dom.ownerDocument.defaultView.getComputedStyle(dom, '')).marginRight;
809
+ domStyle.display = display;
810
+ cleaner();
811
+ }
812
+
813
+ return result;
814
+ }
815
+
816
+ styleHooks = Element.prototype.styleHooks;
817
+
818
+ // Populate the LTR flavors of margin-before et.al. (see Ext.rtl.AbstractElement):
819
+ Element.populateStyleMap(styleHooks, ['left', 'right']);
820
+
821
+ // Ext.supports needs to be initialized (we run very early in the onready sequence),
822
+ // but it is OK to call Ext.supports.init() more times than necessary...
823
+ if (supports.init) {
824
+ supports.init();
825
+ }
826
+
827
+ // Fix bug caused by this: https://bugs.webkit.org/show_bug.cgi?id=13343
828
+ if (!supports.RightMargin) {
829
+ styleHooks.marginRight = styleHooks['margin-right'] = {
830
+ name: 'marginRight',
831
+ // TODO - Touch should use conditional compilation here or ensure that the
832
+ // underlying Ext.supports flags are set correctly...
833
+ get: (supports.DisplayChangeInputSelectionBug || supports.DisplayChangeTextAreaSelectionBug) ?
834
+ fixRightMarginAndInputFocus : fixRightMargin
835
+ };
836
+ }
837
+
838
+ if (!supports.TransparentColor) {
839
+ colorStyles = ['background-color', 'border-color', 'color', 'outline-color'];
840
+ for (i = colorStyles.length; i--; ) {
841
+ name = colorStyles[i];
842
+ camel = Element.normalize(name);
843
+
844
+ styleHooks[name] = styleHooks[camel] = {
845
+ name: camel,
846
+ get: fixTransparent
847
+ };
848
+ }
849
+ }
850
+ });
851
+ }());