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,215 @@
1
+ Ext.require('Ext.util.DelayedTask', function() {
2
+
3
+ /**
4
+ * Represents single event type that an Observable object listens to.
5
+ * All actual listeners are tracked inside here. When the event fires,
6
+ * it calls all the registered listener functions.
7
+ *
8
+ * @private
9
+ */
10
+ Ext.util.Event = Ext.extend(Object, (function() {
11
+ function createTargeted(handler, listener, o, scope){
12
+ return function(){
13
+ if (o.target === arguments[0]){
14
+ handler.apply(scope, arguments);
15
+ }
16
+ };
17
+ }
18
+
19
+ function createBuffered(handler, listener, o, scope) {
20
+ listener.task = new Ext.util.DelayedTask();
21
+ return function() {
22
+ listener.task.delay(o.buffer, handler, scope, Ext.Array.toArray(arguments));
23
+ };
24
+ }
25
+
26
+ function createDelayed(handler, listener, o, scope) {
27
+ return function() {
28
+ var task = new Ext.util.DelayedTask();
29
+ if (!listener.tasks) {
30
+ listener.tasks = [];
31
+ }
32
+ listener.tasks.push(task);
33
+ task.delay(o.delay || 10, handler, scope, Ext.Array.toArray(arguments));
34
+ };
35
+ }
36
+
37
+ function createSingle(handler, listener, o, scope) {
38
+ return function() {
39
+ var event = listener.ev;
40
+
41
+ if (event.removeListener(listener.fn, scope) && event.observable) {
42
+ // Removing from a regular Observable-owned, named event (not an anonymous
43
+ // event such as Ext's readyEvent): Decrement the listeners count
44
+ event.observable.hasListeners[event.name]--;
45
+ }
46
+
47
+ return handler.apply(scope, arguments);
48
+ };
49
+ }
50
+
51
+ return {
52
+ /**
53
+ * @property {Boolean} isEvent
54
+ * `true` in this class to identify an object as an instantiated Event, or subclass thereof.
55
+ */
56
+ isEvent: true,
57
+
58
+ constructor: function(observable, name) {
59
+ this.name = name;
60
+ this.observable = observable;
61
+ this.listeners = [];
62
+ },
63
+
64
+ addListener: function(fn, scope, options) {
65
+ var me = this,
66
+ listener;
67
+ scope = scope || me.observable;
68
+
69
+ //<debug error>
70
+ if (!fn) {
71
+ Ext.Error.raise({
72
+ sourceClass: Ext.getClassName(this.observable),
73
+ sourceMethod: "addListener",
74
+ msg: "The specified callback function is undefined"
75
+ });
76
+ }
77
+ //</debug>
78
+
79
+ if (!me.isListening(fn, scope)) {
80
+ listener = me.createListener(fn, scope, options);
81
+ if (me.firing) {
82
+ // if we are currently firing this event, don't disturb the listener loop
83
+ me.listeners = me.listeners.slice(0);
84
+ }
85
+ me.listeners.push(listener);
86
+ }
87
+ },
88
+
89
+ createListener: function(fn, scope, o) {
90
+ o = o || {};
91
+ scope = scope || this.observable;
92
+
93
+ var listener = {
94
+ fn: fn,
95
+ scope: scope,
96
+ o: o,
97
+ ev: this
98
+ },
99
+ handler = fn;
100
+
101
+ // The order is important. The 'single' wrapper must be wrapped by the 'buffer' and 'delayed' wrapper
102
+ // because the event removal that the single listener does destroys the listener's DelayedTask(s)
103
+ if (o.single) {
104
+ handler = createSingle(handler, listener, o, scope);
105
+ }
106
+ if (o.target) {
107
+ handler = createTargeted(handler, listener, o, scope);
108
+ }
109
+ if (o.delay) {
110
+ handler = createDelayed(handler, listener, o, scope);
111
+ }
112
+ if (o.buffer) {
113
+ handler = createBuffered(handler, listener, o, scope);
114
+ }
115
+
116
+ listener.fireFn = handler;
117
+ return listener;
118
+ },
119
+
120
+ findListener: function(fn, scope) {
121
+ var listeners = this.listeners,
122
+ i = listeners.length,
123
+ listener,
124
+ s;
125
+
126
+ while (i--) {
127
+ listener = listeners[i];
128
+ if (listener) {
129
+ s = listener.scope;
130
+ if (listener.fn == fn && (s == scope || s == this.observable)) {
131
+ return i;
132
+ }
133
+ }
134
+ }
135
+
136
+ return - 1;
137
+ },
138
+
139
+ isListening: function(fn, scope) {
140
+ return this.findListener(fn, scope) !== -1;
141
+ },
142
+
143
+ removeListener: function(fn, scope) {
144
+ var me = this,
145
+ index,
146
+ listener,
147
+ k;
148
+ index = me.findListener(fn, scope);
149
+ if (index != -1) {
150
+ listener = me.listeners[index];
151
+
152
+ if (me.firing) {
153
+ me.listeners = me.listeners.slice(0);
154
+ }
155
+
156
+ // cancel and remove a buffered handler that hasn't fired yet
157
+ if (listener.task) {
158
+ listener.task.cancel();
159
+ delete listener.task;
160
+ }
161
+
162
+ // cancel and remove all delayed handlers that haven't fired yet
163
+ k = listener.tasks && listener.tasks.length;
164
+ if (k) {
165
+ while (k--) {
166
+ listener.tasks[k].cancel();
167
+ }
168
+ delete listener.tasks;
169
+ }
170
+
171
+ // remove this listener from the listeners array
172
+ Ext.Array.erase(me.listeners, index, 1);
173
+ return true;
174
+ }
175
+
176
+ return false;
177
+ },
178
+
179
+ // Iterate to stop any buffered/delayed events
180
+ clearListeners: function() {
181
+ var listeners = this.listeners,
182
+ i = listeners.length;
183
+
184
+ while (i--) {
185
+ this.removeListener(listeners[i].fn, listeners[i].scope);
186
+ }
187
+ },
188
+
189
+ fire: function() {
190
+ var me = this,
191
+ listeners = me.listeners,
192
+ count = listeners.length,
193
+ i,
194
+ args,
195
+ listener;
196
+
197
+ if (count > 0) {
198
+ me.firing = true;
199
+ for (i = 0; i < count; i++) {
200
+ listener = listeners[i];
201
+ args = arguments.length ? Array.prototype.slice.call(arguments, 0) : [];
202
+ if (listener.o) {
203
+ args.push(listener.o);
204
+ }
205
+ if (listener && listener.fireFn.apply(listener.scope || me.observable, args) === false) {
206
+ return (me.firing = false);
207
+ }
208
+ }
209
+ }
210
+ me.firing = false;
211
+ return true;
212
+ }
213
+ };
214
+ }()));
215
+ });
@@ -0,0 +1,551 @@
1
+ /**
2
+ * @class Ext.util.Format
3
+
4
+ This class is a centralized place for formatting functions. It includes
5
+ functions to format various different types of data, such as text, dates and numeric values.
6
+
7
+ __Localization__
8
+ This class contains several options for localization. These can be set once the library has loaded,
9
+ all calls to the functions from that point will use the locale settings that were specified.
10
+ Options include:
11
+ - thousandSeparator
12
+ - decimalSeparator
13
+ - currenyPrecision
14
+ - currencySign
15
+ - currencyAtEnd
16
+ This class also uses the default date format defined here: {@link Ext.Date#defaultFormat}.
17
+
18
+ __Using with renderers__
19
+ There are two helper functions that return a new function that can be used in conjunction with
20
+ grid renderers:
21
+
22
+ columns: [{
23
+ dataIndex: 'date',
24
+ renderer: Ext.util.Format.dateRenderer('Y-m-d')
25
+ }, {
26
+ dataIndex: 'time',
27
+ renderer: Ext.util.Format.numberRenderer('0.000')
28
+ }]
29
+
30
+ Functions that only take a single argument can also be passed directly:
31
+ columns: [{
32
+ dataIndex: 'cost',
33
+ renderer: Ext.util.Format.usMoney
34
+ }, {
35
+ dataIndex: 'productCode',
36
+ renderer: Ext.util.Format.uppercase
37
+ }]
38
+
39
+ __Using with XTemplates__
40
+ XTemplates can also directly use Ext.util.Format functions:
41
+
42
+ new Ext.XTemplate([
43
+ 'Date: {startDate:date("Y-m-d")}',
44
+ 'Cost: {cost:usMoney}'
45
+ ]);
46
+
47
+ * @markdown
48
+ * @singleton
49
+ */
50
+ (function() {
51
+ Ext.ns('Ext.util');
52
+
53
+ Ext.util.Format = {};
54
+ var UtilFormat = Ext.util.Format,
55
+ stripTagsRE = /<\/?[^>]+>/gi,
56
+ stripScriptsRe = /(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig,
57
+ nl2brRe = /\r?\n/g,
58
+
59
+ // A RegExp to remove from a number format string, all characters except digits and '.'
60
+ formatCleanRe = /[^\d\.]/g,
61
+
62
+ // A RegExp to remove from a number format string, all characters except digits and the local decimal separator.
63
+ // Created on first use. The local decimal separator character must be initialized for this to be created.
64
+ I18NFormatCleanRe;
65
+
66
+ Ext.apply(UtilFormat, {
67
+ /**
68
+ * @property {String} thousandSeparator
69
+ * <p>The character that the {@link #number} function uses as a thousand separator.</p>
70
+ * <p>This may be overridden in a locale file.</p>
71
+ */
72
+ //<locale>
73
+ thousandSeparator: ',',
74
+ //</locale>
75
+
76
+ /**
77
+ * @property {String} decimalSeparator
78
+ * <p>The character that the {@link #number} function uses as a decimal point.</p>
79
+ * <p>This may be overridden in a locale file.</p>
80
+ */
81
+ //<locale>
82
+ decimalSeparator: '.',
83
+ //</locale>
84
+
85
+ /**
86
+ * @property {Number} currencyPrecision
87
+ * <p>The number of decimal places that the {@link #currency} function displays.</p>
88
+ * <p>This may be overridden in a locale file.</p>
89
+ */
90
+ //<locale>
91
+ currencyPrecision: 2,
92
+ //</locale>
93
+
94
+ /**
95
+ * @property {String} currencySign
96
+ * <p>The currency sign that the {@link #currency} function displays.</p>
97
+ * <p>This may be overridden in a locale file.</p>
98
+ */
99
+ //<locale>
100
+ currencySign: '$',
101
+ //</locale>
102
+
103
+ /**
104
+ * @property {Boolean} currencyAtEnd
105
+ * <p>This may be set to <code>true</code> to make the {@link #currency} function
106
+ * append the currency sign to the formatted value.</p>
107
+ * <p>This may be overridden in a locale file.</p>
108
+ */
109
+ //<locale>
110
+ currencyAtEnd: false,
111
+ //</locale>
112
+
113
+ /**
114
+ * Checks a reference and converts it to empty string if it is undefined
115
+ * @param {Object} value Reference to check
116
+ * @return {Object} Empty string if converted, otherwise the original value
117
+ */
118
+ undef : function(value) {
119
+ return value !== undefined ? value : "";
120
+ },
121
+
122
+ /**
123
+ * Checks a reference and converts it to the default value if it's empty
124
+ * @param {Object} value Reference to check
125
+ * @param {String} defaultValue The value to insert of it's undefined (defaults to "")
126
+ * @return {String}
127
+ */
128
+ defaultValue : function(value, defaultValue) {
129
+ return value !== undefined && value !== '' ? value : defaultValue;
130
+ },
131
+
132
+ /**
133
+ * Returns a substring from within an original string
134
+ * @param {String} value The original text
135
+ * @param {Number} start The start index of the substring
136
+ * @param {Number} length The length of the substring
137
+ * @return {String} The substring
138
+ */
139
+ substr : 'ab'.substr(-1) != 'b'
140
+ ? function (value, start, length) {
141
+ var str = String(value);
142
+ return (start < 0)
143
+ ? str.substr(Math.max(str.length + start, 0), length)
144
+ : str.substr(start, length);
145
+ }
146
+ : function(value, start, length) {
147
+ return String(value).substr(start, length);
148
+ },
149
+
150
+ /**
151
+ * Converts a string to all lower case letters
152
+ * @param {String} value The text to convert
153
+ * @return {String} The converted text
154
+ */
155
+ lowercase : function(value) {
156
+ return String(value).toLowerCase();
157
+ },
158
+
159
+ /**
160
+ * Converts a string to all upper case letters
161
+ * @param {String} value The text to convert
162
+ * @return {String} The converted text
163
+ */
164
+ uppercase : function(value) {
165
+ return String(value).toUpperCase();
166
+ },
167
+
168
+ /**
169
+ * Format a number as US currency
170
+ * @param {Number/String} value The numeric value to format
171
+ * @return {String} The formatted currency string
172
+ */
173
+ usMoney : function(v) {
174
+ return UtilFormat.currency(v, '$', 2);
175
+ },
176
+
177
+ /**
178
+ * Format a number as a currency
179
+ * @param {Number/String} value The numeric value to format
180
+ * @param {String} sign The currency sign to use (defaults to {@link #currencySign})
181
+ * @param {Number} decimals The number of decimals to use for the currency (defaults to {@link #currencyPrecision})
182
+ * @param {Boolean} end True if the currency sign should be at the end of the string (defaults to {@link #currencyAtEnd})
183
+ * @return {String} The formatted currency string
184
+ */
185
+ currency: function(v, currencySign, decimals, end) {
186
+ var negativeSign = '',
187
+ format = ",0",
188
+ i = 0;
189
+ v = v - 0;
190
+ if (v < 0) {
191
+ v = -v;
192
+ negativeSign = '-';
193
+ }
194
+ decimals = Ext.isDefined(decimals) ? decimals : UtilFormat.currencyPrecision;
195
+ format += format + (decimals > 0 ? '.' : '');
196
+ for (; i < decimals; i++) {
197
+ format += '0';
198
+ }
199
+ v = UtilFormat.number(v, format);
200
+ if ((end || UtilFormat.currencyAtEnd) === true) {
201
+ return Ext.String.format("{0}{1}{2}", negativeSign, v, currencySign || UtilFormat.currencySign);
202
+ } else {
203
+ return Ext.String.format("{0}{1}{2}", negativeSign, currencySign || UtilFormat.currencySign, v);
204
+ }
205
+ },
206
+
207
+ /**
208
+ * Formats the passed date using the specified format pattern.
209
+ * @param {String/Date} value The value to format. If a string is passed, it is converted to a Date by the Javascript
210
+ * Date object's <a href="http://www.w3schools.com/jsref/jsref_parse.asp">parse()</a> method.
211
+ * @param {String} format (Optional) Any valid date format string. Defaults to {@link Ext.Date#defaultFormat}.
212
+ * @return {String} The formatted date string.
213
+ */
214
+ date: function(v, format) {
215
+ if (!v) {
216
+ return "";
217
+ }
218
+ if (!Ext.isDate(v)) {
219
+ v = new Date(Date.parse(v));
220
+ }
221
+ return Ext.Date.dateFormat(v, format || Ext.Date.defaultFormat);
222
+ },
223
+
224
+ /**
225
+ * Returns a date rendering function that can be reused to apply a date format multiple times efficiently
226
+ * @param {String} format Any valid date format string. Defaults to {@link Ext.Date#defaultFormat}.
227
+ * @return {Function} The date formatting function
228
+ */
229
+ dateRenderer : function(format) {
230
+ return function(v) {
231
+ return UtilFormat.date(v, format);
232
+ };
233
+ },
234
+
235
+ /**
236
+ * Strips all HTML tags
237
+ * @param {Object} value The text from which to strip tags
238
+ * @return {String} The stripped text
239
+ */
240
+ stripTags : function(v) {
241
+ return !v ? v : String(v).replace(stripTagsRE, "");
242
+ },
243
+
244
+ /**
245
+ * Strips all script tags
246
+ * @param {Object} value The text from which to strip script tags
247
+ * @return {String} The stripped text
248
+ */
249
+ stripScripts : function(v) {
250
+ return !v ? v : String(v).replace(stripScriptsRe, "");
251
+ },
252
+
253
+ /**
254
+ * Simple format for a file size (xxx bytes, xxx KB, xxx MB)
255
+ * @param {Number/String} size The numeric value to format
256
+ * @return {String} The formatted file size
257
+ */
258
+ fileSize : function(size) {
259
+ if (size < 1024) {
260
+ return size + " bytes";
261
+ } else if (size < 1048576) {
262
+ return (Math.round(((size*10) / 1024))/10) + " KB";
263
+ } else {
264
+ return (Math.round(((size*10) / 1048576))/10) + " MB";
265
+ }
266
+ },
267
+
268
+ /**
269
+ * It does simple math for use in a template, for example:<pre><code>
270
+ * var tpl = new Ext.Template('{value} * 10 = {value:math("* 10")}');
271
+ * </code></pre>
272
+ * @return {Function} A function that operates on the passed value.
273
+ * @method
274
+ */
275
+ math : (function(){
276
+ var fns = {};
277
+
278
+ return function(v, a){
279
+ if (!fns[a]) {
280
+ fns[a] = Ext.functionFactory('v', 'return v ' + a + ';');
281
+ }
282
+ return fns[a](v);
283
+ };
284
+ }()),
285
+
286
+ /**
287
+ * Rounds the passed number to the required decimal precision.
288
+ * @param {Number/String} value The numeric value to round.
289
+ * @param {Number} precision The number of decimal places to which to round the first parameter's value.
290
+ * @return {Number} The rounded value.
291
+ */
292
+ round : function(value, precision) {
293
+ var result = Number(value);
294
+ if (typeof precision == 'number') {
295
+ precision = Math.pow(10, precision);
296
+ result = Math.round(value * precision) / precision;
297
+ }
298
+ return result;
299
+ },
300
+
301
+ /**
302
+ * <p>Formats the passed number according to the passed format string.</p>
303
+ * <p>The number of digits after the decimal separator character specifies the number of
304
+ * decimal places in the resulting string. The <u>local-specific</u> decimal character is used in the result.</p>
305
+ * <p>The <i>presence</i> of a thousand separator character in the format string specifies that
306
+ * the <u>locale-specific</u> thousand separator (if any) is inserted separating thousand groups.</p>
307
+ * <p>By default, "," is expected as the thousand separator, and "." is expected as the decimal separator.</p>
308
+ * <p><b>New to Ext JS 4</b></p>
309
+ * <p>Locale-specific characters are always used in the formatted output when inserting
310
+ * thousand and decimal separators.</p>
311
+ * <p>The format string must specify separator characters according to US/UK conventions ("," as the
312
+ * thousand separator, and "." as the decimal separator)</p>
313
+ * <p>To allow specification of format strings according to local conventions for separator characters, add
314
+ * the string <code>/i</code> to the end of the format string.</p>
315
+ * <div style="margin-left:40px">examples (123456.789):
316
+ * <div style="margin-left:10px">
317
+ * 0 - (123456) show only digits, no precision<br>
318
+ * 0.00 - (123456.78) show only digits, 2 precision<br>
319
+ * 0.0000 - (123456.7890) show only digits, 4 precision<br>
320
+ * 0,000 - (123,456) show comma and digits, no precision<br>
321
+ * 0,000.00 - (123,456.78) show comma and digits, 2 precision<br>
322
+ * 0,0.00 - (123,456.78) shortcut method, show comma and digits, 2 precision<br>
323
+ * To allow specification of the formatting string using UK/US grouping characters (,) and decimal (.) for international numbers, add /i to the end.
324
+ * For example: 0.000,00/i
325
+ * </div></div>
326
+ * @param {Number} v The number to format.
327
+ * @param {String} format The way you would like to format this text.
328
+ * @return {String} The formatted number.
329
+ */
330
+ number : function(v, formatString) {
331
+ if (!formatString) {
332
+ return v;
333
+ }
334
+ v = Ext.Number.from(v, NaN);
335
+ if (isNaN(v)) {
336
+ return '';
337
+ }
338
+ var comma = UtilFormat.thousandSeparator,
339
+ dec = UtilFormat.decimalSeparator,
340
+ i18n = false,
341
+ neg = v < 0,
342
+ hasComma,
343
+ psplit,
344
+ fnum,
345
+ cnum,
346
+ parr,
347
+ j,
348
+ m,
349
+ n,
350
+ i;
351
+
352
+ v = Math.abs(v);
353
+
354
+ // The "/i" suffix allows caller to use a locale-specific formatting string.
355
+ // Clean the format string by removing all but numerals and the decimal separator.
356
+ // Then split the format string into pre and post decimal segments according to *what* the
357
+ // decimal separator is. If they are specifying "/i", they are using the local convention in the format string.
358
+ if (formatString.substr(formatString.length - 2) == '/i') {
359
+ if (!I18NFormatCleanRe) {
360
+ I18NFormatCleanRe = new RegExp('[^\\d\\' + UtilFormat.decimalSeparator + ']','g');
361
+ }
362
+ formatString = formatString.substr(0, formatString.length - 2);
363
+ i18n = true;
364
+ hasComma = formatString.indexOf(comma) != -1;
365
+ psplit = formatString.replace(I18NFormatCleanRe, '').split(dec);
366
+ } else {
367
+ hasComma = formatString.indexOf(',') != -1;
368
+ psplit = formatString.replace(formatCleanRe, '').split('.');
369
+ }
370
+
371
+ if (psplit.length > 2) {
372
+ //<debug>
373
+ Ext.Error.raise({
374
+ sourceClass: "Ext.util.Format",
375
+ sourceMethod: "number",
376
+ value: v,
377
+ formatString: formatString,
378
+ msg: "Invalid number format, should have no more than 1 decimal"
379
+ });
380
+ //</debug>
381
+ } else if (psplit.length > 1) {
382
+ v = Ext.Number.toFixed(v, psplit[1].length);
383
+ } else {
384
+ v = Ext.Number.toFixed(v, 0);
385
+ }
386
+
387
+ fnum = v.toString();
388
+
389
+ psplit = fnum.split('.');
390
+
391
+ if (hasComma) {
392
+ cnum = psplit[0];
393
+ parr = [];
394
+ j = cnum.length;
395
+ m = Math.floor(j / 3);
396
+ n = cnum.length % 3 || 3;
397
+
398
+ for (i = 0; i < j; i += n) {
399
+ if (i !== 0) {
400
+ n = 3;
401
+ }
402
+
403
+ parr[parr.length] = cnum.substr(i, n);
404
+ m -= 1;
405
+ }
406
+ fnum = parr.join(comma);
407
+ if (psplit[1]) {
408
+ fnum += dec + psplit[1];
409
+ }
410
+ } else {
411
+ if (psplit[1]) {
412
+ fnum = psplit[0] + dec + psplit[1];
413
+ }
414
+ }
415
+
416
+ if (neg) {
417
+ /*
418
+ * Edge case. If we have a very small negative number it will get rounded to 0,
419
+ * however the initial check at the top will still report as negative. Replace
420
+ * everything but 1-9 and check if the string is empty to determine a 0 value.
421
+ */
422
+ neg = fnum.replace(/[^1-9]/g, '') !== '';
423
+ }
424
+
425
+ return (neg ? '-' : '') + formatString.replace(/[\d,?\.?]+/, fnum);
426
+ },
427
+
428
+ /**
429
+ * Returns a number rendering function that can be reused to apply a number format multiple times efficiently
430
+ * @param {String} format Any valid number format string for {@link #number}
431
+ * @return {Function} The number formatting function
432
+ */
433
+ numberRenderer : function(format) {
434
+ return function(v) {
435
+ return UtilFormat.number(v, format);
436
+ };
437
+ },
438
+
439
+ /**
440
+ * Selectively do a plural form of a word based on a numeric value. For example, in a template,
441
+ * {commentCount:plural("Comment")} would result in "1 Comment" if commentCount was 1 or would be "x Comments"
442
+ * if the value is 0 or greater than 1.
443
+ * @param {Number} value The value to compare against
444
+ * @param {String} singular The singular form of the word
445
+ * @param {String} plural (optional) The plural form of the word (defaults to the singular with an "s")
446
+ */
447
+ plural : function(v, s, p) {
448
+ return v +' ' + (v == 1 ? s : (p ? p : s+'s'));
449
+ },
450
+
451
+ /**
452
+ * Converts newline characters to the HTML tag &lt;br/>
453
+ * @param {String} The string value to format.
454
+ * @return {String} The string with embedded &lt;br/> tags in place of newlines.
455
+ */
456
+ nl2br : function(v) {
457
+ return Ext.isEmpty(v) ? '' : v.replace(nl2brRe, '<br/>');
458
+ },
459
+
460
+ /**
461
+ * Alias for {@link Ext.String#capitalize}.
462
+ * @method
463
+ * @inheritdoc Ext.String#capitalize
464
+ */
465
+ capitalize: Ext.String.capitalize,
466
+
467
+ /**
468
+ * Alias for {@link Ext.String#ellipsis}.
469
+ * @method
470
+ * @inheritdoc Ext.String#ellipsis
471
+ */
472
+ ellipsis: Ext.String.ellipsis,
473
+
474
+ /**
475
+ * Alias for {@link Ext.String#format}.
476
+ * @method
477
+ * @inheritdoc Ext.String#format
478
+ */
479
+ format: Ext.String.format,
480
+
481
+ /**
482
+ * Alias for {@link Ext.String#htmlDecode}.
483
+ * @method
484
+ * @inheritdoc Ext.String#htmlDecode
485
+ */
486
+ htmlDecode: Ext.String.htmlDecode,
487
+
488
+ /**
489
+ * Alias for {@link Ext.String#htmlEncode}.
490
+ * @method
491
+ * @inheritdoc Ext.String#htmlEncode
492
+ */
493
+ htmlEncode: Ext.String.htmlEncode,
494
+
495
+ /**
496
+ * Alias for {@link Ext.String#leftPad}.
497
+ * @method
498
+ * @inheritdoc Ext.String#leftPad
499
+ */
500
+ leftPad: Ext.String.leftPad,
501
+
502
+ /**
503
+ * Alias for {@link Ext.String#trim}.
504
+ * @method
505
+ * @inheritdoc Ext.String#trim
506
+ */
507
+ trim : Ext.String.trim,
508
+
509
+ /**
510
+ * Parses a number or string representing margin sizes into an object. Supports CSS-style margin declarations
511
+ * (e.g. 10, "10", "10 10", "10 10 10" and "10 10 10 10" are all valid options and would return the same result)
512
+ * @param {Number/String} v The encoded margins
513
+ * @return {Object} An object with margin sizes for top, right, bottom and left
514
+ */
515
+ parseBox : function(box) {
516
+ box = Ext.isEmpty(box) ? '' : box;
517
+ if (Ext.isNumber(box)) {
518
+ box = box.toString();
519
+ }
520
+ var parts = box.split(' '),
521
+ ln = parts.length;
522
+
523
+ if (ln == 1) {
524
+ parts[1] = parts[2] = parts[3] = parts[0];
525
+ }
526
+ else if (ln == 2) {
527
+ parts[2] = parts[0];
528
+ parts[3] = parts[1];
529
+ }
530
+ else if (ln == 3) {
531
+ parts[3] = parts[1];
532
+ }
533
+
534
+ return {
535
+ top :parseInt(parts[0], 10) || 0,
536
+ right :parseInt(parts[1], 10) || 0,
537
+ bottom:parseInt(parts[2], 10) || 0,
538
+ left :parseInt(parts[3], 10) || 0
539
+ };
540
+ },
541
+
542
+ /**
543
+ * Escapes the passed string for use in a regular expression
544
+ * @param {String} str
545
+ * @return {String}
546
+ */
547
+ escapeRegex : function(s) {
548
+ return s.replace(/([\-.*+?\^${}()|\[\]\/\\])/g, "\\$1");
549
+ }
550
+ });
551
+ }());