lsd_rails 0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (991) hide show
  1. data/Packages/Sheet.js/Demo/index.html +78 -0
  2. data/Packages/Sheet.js/Demo/pp.css +69 -0
  3. data/Packages/Sheet.js/Demo/subtlegradient-jslib.js +450 -0
  4. data/Packages/Sheet.js/LICENSE +21 -0
  5. data/Packages/Sheet.js/README.md +59 -0
  6. data/Packages/Sheet.js/Source/Sheet.DOM.js +65 -0
  7. data/Packages/Sheet.js/Source/Sheet.js +80 -0
  8. data/Packages/Sheet.js/Source/SheetParser.CSS.js +194 -0
  9. data/Packages/Sheet.js/Source/SheetParser.Property.js +227 -0
  10. data/Packages/Sheet.js/Source/SheetParser.Styles.js +115 -0
  11. data/Packages/Sheet.js/Source/SheetParser.Value.js +114 -0
  12. data/Packages/Sheet.js/Source/sg-regex-tools.js +42 -0
  13. data/Packages/Sheet.js/Test/DOM-styleSheet.api.js +404 -0
  14. data/Packages/Sheet.js/Test/Sheet.test.js +25 -0
  15. data/Packages/Sheet.js/Test/SheetParser.CSS.RegExp.test.js +108 -0
  16. data/Packages/Sheet.js/Test/SheetParser.Property.test.js +230 -0
  17. data/Packages/Sheet.js/Test/SheetParser.Value.test.js +94 -0
  18. data/Packages/Sheet.js/Test/all-types.mock.css +103 -0
  19. data/Packages/Sheet.js/Test/document.styleSheets.test.js +7 -0
  20. data/Packages/Sheet.js/Test/index.html +12 -0
  21. data/Packages/Sheet.js/Test/lib/qunit/package.json +21 -0
  22. data/Packages/Sheet.js/Test/lib/qunit/qunit/qunit.css +196 -0
  23. data/Packages/Sheet.js/Test/lib/qunit/qunit/qunit.js +1303 -0
  24. data/Packages/Sheet.js/Test/lib/sg-assert-helpers.js +93 -0
  25. data/Packages/Sheet.js/Test/lib/sg-qunit-testrunner.js +40 -0
  26. data/Packages/Sheet.js/Test/lib/sg-testrunner.js +49 -0
  27. data/Packages/Sheet.js/Test/properties.html +39 -0
  28. data/Packages/Sheet.js/Test/run.html +43 -0
  29. data/Packages/Sheet.js/Test/run.js +10 -0
  30. data/Packages/Sheet.js/Test/test-browser.html +47 -0
  31. data/Packages/Sheet.js/Test/values.html +38 -0
  32. data/Packages/Sheet.js/package.json +59 -0
  33. data/Packages/Sheet.js/test-all +13 -0
  34. data/Packages/art/Docs/ART/ART.Group.md +106 -0
  35. data/Packages/art/Docs/ART/ART.Path.md +167 -0
  36. data/Packages/art/Docs/ART/ART.Shape.md +106 -0
  37. data/Packages/art/Docs/ART/ART.Transform.md +148 -0
  38. data/Packages/art/Docs/ART/ART.md +113 -0
  39. data/Packages/art/Docs/Modes/ART.Base.md +10 -0
  40. data/Packages/art/Docs/Modes/ART.SVG.md +9 -0
  41. data/Packages/art/Docs/Modes/ART.VML.md +12 -0
  42. data/Packages/art/Docs/Shapes/ART.Font.md +15 -0
  43. data/Packages/art/Docs/Shapes/ART.Shapes.md +63 -0
  44. data/Packages/art/Docs/Shapes/ART.Text.md +14 -0
  45. data/Packages/art/Fonts/Moderna.Bold.js +31 -0
  46. data/Packages/art/Fonts/Moderna.js +31 -0
  47. data/Packages/art/README.md +3 -0
  48. data/Packages/art/Source/ART.Base.js +33 -0
  49. data/Packages/art/Source/ART.Font.js +89 -0
  50. data/Packages/art/Source/ART.Path.js +440 -0
  51. data/Packages/art/Source/ART.SVG.js +593 -0
  52. data/Packages/art/Source/ART.Shapes.js +136 -0
  53. data/Packages/art/Source/ART.VML.js +772 -0
  54. data/Packages/art/Source/ART.js +202 -0
  55. data/Packages/art/license.txt +21 -0
  56. data/Packages/art/package.yml +24 -0
  57. data/Packages/art-morph/Demos/index.html +18 -0
  58. data/Packages/art-morph/Demos/morph.js +30 -0
  59. data/Packages/art-morph/README.md +3 -0
  60. data/Packages/art-morph/Source/ART.Path.Morph.js +76 -0
  61. data/Packages/art-morph/license.txt +21 -0
  62. data/Packages/lsd/CHANGELOG +152 -0
  63. data/Packages/lsd/README.md +233 -0
  64. data/Packages/lsd/Source/ART/ART.Element.js +51 -0
  65. data/Packages/lsd/Source/ART/ART.Glyphs.js +51 -0
  66. data/Packages/lsd/Source/ART/ART.SVG.js +122 -0
  67. data/Packages/lsd/Source/ART/ART.Shape.Arrow.js +104 -0
  68. data/Packages/lsd/Source/ART/ART.Shape.Ellipse.js +42 -0
  69. data/Packages/lsd/Source/ART/ART.Shape.Flower.js +71 -0
  70. data/Packages/lsd/Source/ART/ART.Shape.Rectangle.js +67 -0
  71. data/Packages/lsd/Source/ART/ART.Shape.Star.js +57 -0
  72. data/Packages/lsd/Source/ART/ART.js +41 -0
  73. data/Packages/lsd/Source/Action/Clone.js +36 -0
  74. data/Packages/lsd/Source/Action/Counter.js +98 -0
  75. data/Packages/lsd/Source/Action/Create.js +26 -0
  76. data/Packages/lsd/Source/Action/Delete.js +32 -0
  77. data/Packages/lsd/Source/Action/Display.js +50 -0
  78. data/Packages/lsd/Source/Action/Edit.js +138 -0
  79. data/Packages/lsd/Source/Action/Focus.js +29 -0
  80. data/Packages/lsd/Source/Action/History.js +27 -0
  81. data/Packages/lsd/Source/Action/Invoke.js +34 -0
  82. data/Packages/lsd/Source/Action/List.js +40 -0
  83. data/Packages/lsd/Source/Action/Set.js +36 -0
  84. data/Packages/lsd/Source/Action/State.js +33 -0
  85. data/Packages/lsd/Source/Action/Submit.js +60 -0
  86. data/Packages/lsd/Source/Action/Toggle.js +41 -0
  87. data/Packages/lsd/Source/Action/Update.js +79 -0
  88. data/Packages/lsd/Source/Action.js +169 -0
  89. data/Packages/lsd/Source/Behavior.js +68 -0
  90. data/Packages/lsd/Source/Command.js +135 -0
  91. data/Packages/lsd/Source/Document.js +188 -0
  92. data/Packages/lsd/Source/Interpolation.js +103 -0
  93. data/Packages/lsd/Source/LSD.js +163 -0
  94. data/Packages/lsd/Source/Layer/Color.js +43 -0
  95. data/Packages/lsd/Source/Layer/Offset.js +37 -0
  96. data/Packages/lsd/Source/Layer/Position.js +35 -0
  97. data/Packages/lsd/Source/Layer/Radius.js +39 -0
  98. data/Packages/lsd/Source/Layer/Scale.js +36 -0
  99. data/Packages/lsd/Source/Layer/Shadow.Blur.js +41 -0
  100. data/Packages/lsd/Source/Layer/Shadow.Inset.js +99 -0
  101. data/Packages/lsd/Source/Layer/Shadow.Native.js +35 -0
  102. data/Packages/lsd/Source/Layer/Shadow.Onion.js +105 -0
  103. data/Packages/lsd/Source/Layer/Shadow.js +46 -0
  104. data/Packages/lsd/Source/Layer/Shape.js +56 -0
  105. data/Packages/lsd/Source/Layer/Size.js +38 -0
  106. data/Packages/lsd/Source/Layer/Stroke.js +61 -0
  107. data/Packages/lsd/Source/Layer.js +212 -0
  108. data/Packages/lsd/Source/Layout.js +445 -0
  109. data/Packages/lsd/Source/Mixin/Animation.js +77 -0
  110. data/Packages/lsd/Source/Mixin/Choice.js +62 -0
  111. data/Packages/lsd/Source/Mixin/Command.js +98 -0
  112. data/Packages/lsd/Source/Mixin/ContentEditable.js +124 -0
  113. data/Packages/lsd/Source/Mixin/Draggable.js +113 -0
  114. data/Packages/lsd/Source/Mixin/Fieldset.js +235 -0
  115. data/Packages/lsd/Source/Mixin/Focusable.js +122 -0
  116. data/Packages/lsd/Source/Mixin/Invokable.js +83 -0
  117. data/Packages/lsd/Source/Mixin/List.js +99 -0
  118. data/Packages/lsd/Source/Mixin/Placeholder.js +77 -0
  119. data/Packages/lsd/Source/Mixin/Request.js +120 -0
  120. data/Packages/lsd/Source/Mixin/Resizable.js +182 -0
  121. data/Packages/lsd/Source/Mixin/Resource.js +81 -0
  122. data/Packages/lsd/Source/Mixin/Root.js +41 -0
  123. data/Packages/lsd/Source/Mixin/Scrollable.js +69 -0
  124. data/Packages/lsd/Source/Mixin/Sortable.js +134 -0
  125. data/Packages/lsd/Source/Mixin/Submittable.js +64 -0
  126. data/Packages/lsd/Source/Mixin/Target.js +102 -0
  127. data/Packages/lsd/Source/Mixin/Touchable.js +41 -0
  128. data/Packages/lsd/Source/Mixin/Unselectable.js +35 -0
  129. data/Packages/lsd/Source/Mixin/Uploader.js +277 -0
  130. data/Packages/lsd/Source/Mixin/Validity.js +102 -0
  131. data/Packages/lsd/Source/Mixin/Value.js +160 -0
  132. data/Packages/lsd/Source/Module/Accessories/Actions.js +79 -0
  133. data/Packages/lsd/Source/Module/Accessories/Attributes.js +192 -0
  134. data/Packages/lsd/Source/Module/Accessories/Chain.js +232 -0
  135. data/Packages/lsd/Source/Module/Accessories/Dimensions.js +114 -0
  136. data/Packages/lsd/Source/Module/Accessories/Element.js +233 -0
  137. data/Packages/lsd/Source/Module/Accessories/Events.js +352 -0
  138. data/Packages/lsd/Source/Module/Accessories/Options.js +112 -0
  139. data/Packages/lsd/Source/Module/Accessories/Shortcuts.js +46 -0
  140. data/Packages/lsd/Source/Module/Accessories/States.js +28 -0
  141. data/Packages/lsd/Source/Module/Accessories/Styles.js +230 -0
  142. data/Packages/lsd/Source/Module/Accessories/Tag.js +145 -0
  143. data/Packages/lsd/Source/Module/Accessories.js +47 -0
  144. data/Packages/lsd/Source/Module/Ambient/Allocations.js +184 -0
  145. data/Packages/lsd/Source/Module/Ambient/Container.js +56 -0
  146. data/Packages/lsd/Source/Module/Ambient/DOM.js +355 -0
  147. data/Packages/lsd/Source/Module/Ambient/Expectations.js +358 -0
  148. data/Packages/lsd/Source/Module/Ambient/Layout.js +97 -0
  149. data/Packages/lsd/Source/Module/Ambient/Mutations.js +101 -0
  150. data/Packages/lsd/Source/Module/Ambient/Proxies.js +84 -0
  151. data/Packages/lsd/Source/Module/Ambient/Relations.js +99 -0
  152. data/Packages/lsd/Source/Module/Ambient/Selectors.js +136 -0
  153. data/Packages/lsd/Source/Module/Ambient.js +39 -0
  154. data/Packages/lsd/Source/Module/Graphics/Layers.js +177 -0
  155. data/Packages/lsd/Source/Module/Graphics/Render.js +96 -0
  156. data/Packages/lsd/Source/Module/Graphics/Shape.js +56 -0
  157. data/Packages/lsd/Source/Module/Graphics.js +30 -0
  158. data/Packages/lsd/Source/Relation.js +397 -0
  159. data/Packages/lsd/Source/Sheet.js +324 -0
  160. data/Packages/lsd/Source/Trait/Date.js +66 -0
  161. data/Packages/lsd/Source/Trait/Input.js +65 -0
  162. data/Packages/lsd/Source/Trait/Menu.js +21 -0
  163. data/Packages/lsd/Source/Trait/Slider.js +93 -0
  164. data/Packages/lsd/Source/Type.js +92 -0
  165. data/Packages/lsd/Source/Widget.js +60 -0
  166. data/Packages/lsd/UNLICENSE +24 -0
  167. data/Packages/lsd/package.yml +114 -0
  168. data/Packages/lsd-mobile/Source/Body/Dialog.js +57 -0
  169. data/Packages/lsd-mobile/Source/Body/Page.js +50 -0
  170. data/Packages/lsd-mobile/Source/Body.js +30 -0
  171. data/Packages/lsd-mobile/Source/Dialog.js +0 -0
  172. data/Packages/lsd-mobile/Source/Document.js +78 -0
  173. data/Packages/lsd-mobile/Source/Input/Date.js +119 -0
  174. data/Packages/lsd-mobile/Source/Input.js +24 -0
  175. data/Packages/lsd-mobile/Source/Mobile.js +27 -0
  176. data/Packages/lsd-mobile/package.yml +15 -0
  177. data/Packages/lsd-native/README.md +0 -0
  178. data/Packages/lsd-native/Source/Input/Checkbox.js +42 -0
  179. data/Packages/lsd-native/Source/Input/Date.js +33 -0
  180. data/Packages/lsd-native/Source/Input/File.js +23 -0
  181. data/Packages/lsd-native/Source/Input/Hidden.js +23 -0
  182. data/Packages/lsd-native/Source/Input/Password.js +29 -0
  183. data/Packages/lsd-native/Source/Input/Radio.js +42 -0
  184. data/Packages/lsd-native/Source/Input/Search.js +23 -0
  185. data/Packages/lsd-native/Source/Input.js +48 -0
  186. data/Packages/lsd-native/Source/Select.js +29 -0
  187. data/Packages/lsd-native/Source/Textarea.js +27 -0
  188. data/Packages/lsd-native/package.yml +18 -0
  189. data/Packages/lsd-specs/Compiled/includes.js +217 -0
  190. data/Packages/lsd-specs/Configuration.js +124 -0
  191. data/Packages/lsd-specs/compile.sh +1 -0
  192. data/Packages/lsd-specs/index.html +26 -0
  193. data/Packages/lsd-specs/lsd/Action/Counter.js +35 -0
  194. data/Packages/lsd-specs/lsd/Layout.js +146 -0
  195. data/Packages/lsd-specs/lsd/Module/Accessories/Attributes.js +68 -0
  196. data/Packages/lsd-specs/lsd/Module/Accessories/Chain.js +385 -0
  197. data/Packages/lsd-specs/lsd/Module/Accessories/Dimensions.js +53 -0
  198. data/Packages/lsd-specs/lsd/Module/Accessories/Element.js +112 -0
  199. data/Packages/lsd-specs/lsd/Module/Accessories/Events.js +151 -0
  200. data/Packages/lsd-specs/lsd/Module/Accessories/Options.js +36 -0
  201. data/Packages/lsd-specs/lsd/Module/Accessories/Shortcuts.js +0 -0
  202. data/Packages/lsd-specs/lsd/Module/Accessories/States.js +0 -0
  203. data/Packages/lsd-specs/lsd/Module/Accessories/Styles.js +14 -0
  204. data/Packages/lsd-specs/lsd/Module/Accessories/Tag.js +84 -0
  205. data/Packages/lsd-specs/lsd/Module/Ambient/DOM.js +394 -0
  206. data/Packages/lsd-specs/lsd/Module/Ambient/Expectations.js +199 -0
  207. data/Packages/lsd-specs/lsd/Module/Ambient/Layout.js +0 -0
  208. data/Packages/lsd-specs/lsd/Module/Ambient/Relations.js +7 -0
  209. data/Packages/lsd-specs/lsd/Module/Behavior/Target.Parser.js +123 -0
  210. data/Packages/lsd-specs/lsd/Module/Behavior/Target.js +0 -0
  211. data/Packages/lsd-specs/lsd/Relation.js +428 -0
  212. data/Packages/lsd-specs/lsd/Trait/Dimensions.js +216 -0
  213. data/Packages/lsd-specs/lsd/Trait/Layers.js +66 -0
  214. data/Packages/lsd-specs/lsd/Type.js +27 -0
  215. data/Packages/lsd-specs/outdated/Focus.js +137 -0
  216. data/Packages/lsd-widgets/Source/Body/Dialog.js +68 -0
  217. data/Packages/lsd-widgets/Source/Body/Page.js +38 -0
  218. data/Packages/lsd-widgets/Source/Body.js +27 -0
  219. data/Packages/lsd-widgets/Source/Button.js +34 -0
  220. data/Packages/lsd-widgets/Source/Form.js +43 -0
  221. data/Packages/lsd-widgets/Source/Input/Checkbox.js +31 -0
  222. data/Packages/lsd-widgets/Source/Input/Date.js +43 -0
  223. data/Packages/lsd-widgets/Source/Input/File.js +63 -0
  224. data/Packages/lsd-widgets/Source/Input/HTML.js +54 -0
  225. data/Packages/lsd-widgets/Source/Input/Radio.js +31 -0
  226. data/Packages/lsd-widgets/Source/Input/Range.js +61 -0
  227. data/Packages/lsd-widgets/Source/Input/Submit.js +55 -0
  228. data/Packages/lsd-widgets/Source/Input.js +62 -0
  229. data/Packages/lsd-widgets/Source/Label.js +66 -0
  230. data/Packages/lsd-widgets/Source/Menu/Context.js +39 -0
  231. data/Packages/lsd-widgets/Source/Menu/List.js +49 -0
  232. data/Packages/lsd-widgets/Source/Menu/Toolbar.Menu.js +65 -0
  233. data/Packages/lsd-widgets/Source/Menu/Toolbar.js +30 -0
  234. data/Packages/lsd-widgets/Source/Menu.js +38 -0
  235. data/Packages/lsd-widgets/Source/Progress.js +45 -0
  236. data/Packages/lsd-widgets/Source/Scrollbar.js +131 -0
  237. data/Packages/lsd-widgets/Source/Select.js +81 -0
  238. data/Packages/lsd-widgets/Source/Table/Calendar.js +127 -0
  239. data/Packages/lsd-widgets/Source/Table.js +100 -0
  240. data/Packages/lsd-widgets/Source/Textarea.js +32 -0
  241. data/Packages/lsd-widgets/package.yml +32 -0
  242. data/Packages/mootools-color/README.md +4 -0
  243. data/Packages/mootools-color/Source/Color.js +167 -0
  244. data/Packages/mootools-color/license.txt +21 -0
  245. data/Packages/mootools-color/package.yml +20 -0
  246. data/Packages/mootools-core/Docs/Browser/Browser.md +102 -0
  247. data/Packages/mootools-core/Docs/Class/Class.Extras.md +453 -0
  248. data/Packages/mootools-core/Docs/Class/Class.md +133 -0
  249. data/Packages/mootools-core/Docs/Core/Core.md +385 -0
  250. data/Packages/mootools-core/Docs/Element/Element.Dimensions.md +235 -0
  251. data/Packages/mootools-core/Docs/Element/Element.Event.md +330 -0
  252. data/Packages/mootools-core/Docs/Element/Element.Style.md +121 -0
  253. data/Packages/mootools-core/Docs/Element/Element.md +1924 -0
  254. data/Packages/mootools-core/Docs/Fx/Fx.CSS.md +12 -0
  255. data/Packages/mootools-core/Docs/Fx/Fx.Morph.md +225 -0
  256. data/Packages/mootools-core/Docs/Fx/Fx.Transitions.md +157 -0
  257. data/Packages/mootools-core/Docs/Fx/Fx.Tween.md +303 -0
  258. data/Packages/mootools-core/Docs/Fx/Fx.md +172 -0
  259. data/Packages/mootools-core/Docs/Intro.md +37 -0
  260. data/Packages/mootools-core/Docs/Request/Request.HTML.md +179 -0
  261. data/Packages/mootools-core/Docs/Request/Request.JSON.md +61 -0
  262. data/Packages/mootools-core/Docs/Request/Request.md +461 -0
  263. data/Packages/mootools-core/Docs/Types/Array.md +797 -0
  264. data/Packages/mootools-core/Docs/Types/Event.md +204 -0
  265. data/Packages/mootools-core/Docs/Types/Function.md +409 -0
  266. data/Packages/mootools-core/Docs/Types/Number.md +212 -0
  267. data/Packages/mootools-core/Docs/Types/Object.md +599 -0
  268. data/Packages/mootools-core/Docs/Types/String.md +400 -0
  269. data/Packages/mootools-core/Docs/Utilities/Cookie.md +95 -0
  270. data/Packages/mootools-core/Docs/Utilities/DOMReady.md +21 -0
  271. data/Packages/mootools-core/Docs/Utilities/JSON.md +56 -0
  272. data/Packages/mootools-core/Docs/Utilities/Swiff.md +90 -0
  273. data/Packages/mootools-core/Docs/license.md +8 -0
  274. data/Packages/mootools-core/README.md +6 -0
  275. data/Packages/mootools-core/Source/Browser/Browser.js +264 -0
  276. data/Packages/mootools-core/Source/Class/Class.Extras.js +121 -0
  277. data/Packages/mootools-core/Source/Class/Class.js +115 -0
  278. data/Packages/mootools-core/Source/Core/Core.js +511 -0
  279. data/Packages/mootools-core/Source/Element/Element.Dimensions.js +283 -0
  280. data/Packages/mootools-core/Source/Element/Element.Event.js +175 -0
  281. data/Packages/mootools-core/Source/Element/Element.Style.js +184 -0
  282. data/Packages/mootools-core/Source/Element/Element.js +862 -0
  283. data/Packages/mootools-core/Source/Fx/Fx.CSS.js +149 -0
  284. data/Packages/mootools-core/Source/Fx/Fx.Morph.js +77 -0
  285. data/Packages/mootools-core/Source/Fx/Fx.Transitions.js +113 -0
  286. data/Packages/mootools-core/Source/Fx/Fx.Tween.js +103 -0
  287. data/Packages/mootools-core/Source/Fx/Fx.js +179 -0
  288. data/Packages/mootools-core/Source/Request/Request.HTML.js +88 -0
  289. data/Packages/mootools-core/Source/Request/Request.JSON.js +46 -0
  290. data/Packages/mootools-core/Source/Request/Request.js +278 -0
  291. data/Packages/mootools-core/Source/Slick/Slick.Finder.js +970 -0
  292. data/Packages/mootools-core/Source/Slick/Slick.Parser.js +230 -0
  293. data/Packages/mootools-core/Source/Types/Array.js +178 -0
  294. data/Packages/mootools-core/Source/Types/Event.js +135 -0
  295. data/Packages/mootools-core/Source/Types/Function.js +118 -0
  296. data/Packages/mootools-core/Source/Types/Number.js +52 -0
  297. data/Packages/mootools-core/Source/Types/Object.js +209 -0
  298. data/Packages/mootools-core/Source/Types/String.js +82 -0
  299. data/Packages/mootools-core/Source/Utilities/Cookie.js +74 -0
  300. data/Packages/mootools-core/Source/Utilities/DOMReady.js +105 -0
  301. data/Packages/mootools-core/Source/Utilities/JSON.js +81 -0
  302. data/Packages/mootools-core/Source/Utilities/Swiff.js +113 -0
  303. data/Packages/mootools-core/Source/license.txt +21 -0
  304. data/Packages/mootools-core/build +40 -0
  305. data/Packages/mootools-core/package.yml +43 -0
  306. data/Packages/mootools-custom-event/Demos/index.html +147 -0
  307. data/Packages/mootools-custom-event/Demos/mootools-core.js +3183 -0
  308. data/Packages/mootools-custom-event/Demos/style.css +44 -0
  309. data/Packages/mootools-custom-event/LICENSE +24 -0
  310. data/Packages/mootools-custom-event/README.md +128 -0
  311. data/Packages/mootools-custom-event/Source/Element.defineCustomEvent.js +90 -0
  312. data/Packages/mootools-custom-event/package.yml +20 -0
  313. data/Packages/mootools-ext/Examples/Class.Includes.js +47 -0
  314. data/Packages/mootools-ext/Examples/Class.Macros.js +69 -0
  315. data/Packages/mootools-ext/Examples/Class.States.js +20 -0
  316. data/Packages/mootools-ext/Examples/_includes.haml +17 -0
  317. data/Packages/mootools-ext/Examples/examples.js +8 -0
  318. data/Packages/mootools-ext/Examples/index.haml +22 -0
  319. data/Packages/mootools-ext/README.md +8 -0
  320. data/Packages/mootools-ext/Rakefile +5 -0
  321. data/Packages/mootools-ext/Source/Core/Class.Binds.Remover.js +21 -0
  322. data/Packages/mootools-ext/Source/Core/Class.Includes.js +68 -0
  323. data/Packages/mootools-ext/Source/Core/Class.Macros.js +90 -0
  324. data/Packages/mootools-ext/Source/Core/Class.Mixin.js +89 -0
  325. data/Packages/mootools-ext/Source/Core/Class.Shortcuts.js +124 -0
  326. data/Packages/mootools-ext/Source/Core/Class.States.js +95 -0
  327. data/Packages/mootools-ext/Source/Drag/Drag.Limits.js +42 -0
  328. data/Packages/mootools-ext/Source/Drag/Slider.js +33 -0
  329. data/Packages/mootools-ext/Source/Drag/Sortables.Delegation.js +64 -0
  330. data/Packages/mootools-ext/Source/Element/Element.Selection.js +45 -0
  331. data/Packages/mootools-ext/Source/Element/Element.from.js +50 -0
  332. data/Packages/mootools-ext/Source/Element/Element.js +47 -0
  333. data/Packages/mootools-ext/Source/Element/Element.onDispose.js +36 -0
  334. data/Packages/mootools-ext/Source/Element/Events/Input.js +23 -0
  335. data/Packages/mootools-ext/Source/Element/Events/Keypress.js +65 -0
  336. data/Packages/mootools-ext/Source/Element/Properties/BorderRadius.js +41 -0
  337. data/Packages/mootools-ext/Source/Element/Properties/BoxShadow.js +61 -0
  338. data/Packages/mootools-ext/Source/Element/Properties/Data.js +32 -0
  339. data/Packages/mootools-ext/Source/Element/Properties/Item.js +210 -0
  340. data/Packages/mootools-ext/Source/Element/Properties/UserSelect.js +32 -0
  341. data/Packages/mootools-ext/Source/Element/Properties/Widget.js +32 -0
  342. data/Packages/mootools-ext/Source/Request/Request.Auto.js +38 -0
  343. data/Packages/mootools-ext/Source/Request/Request.Form.js +108 -0
  344. data/Packages/mootools-ext/Source/Request/Request.Headers.js +41 -0
  345. data/Packages/mootools-ext/Source/Request/Request.Statuses.js +95 -0
  346. data/Packages/mootools-ext/Source/Types/Event.js +336 -0
  347. data/Packages/mootools-ext/Source/Types/FastArray.js +74 -0
  348. data/Packages/mootools-ext/Source/Types/Object.js +34 -0
  349. data/Packages/mootools-ext/Source/Types/String.js +33 -0
  350. data/Packages/mootools-ext/package.yml +45 -0
  351. data/Packages/mootools-history/Demos/demo.css +14 -0
  352. data/Packages/mootools-history/Demos/demo.js +66 -0
  353. data/Packages/mootools-history/Demos/index.html +32 -0
  354. data/Packages/mootools-history/Demos/mootools-class-extras.js +27 -0
  355. data/Packages/mootools-history/Demos/mootools-core.js +4422 -0
  356. data/Packages/mootools-history/Demos/mootools.html +27 -0
  357. data/Packages/mootools-history/Demos/other.html +27 -0
  358. data/Packages/mootools-history/Demos/style.css +96 -0
  359. data/Packages/mootools-history/LICENSE +24 -0
  360. data/Packages/mootools-history/README.md +97 -0
  361. data/Packages/mootools-history/Source/History.handleInitialState.js +42 -0
  362. data/Packages/mootools-history/Source/History.js +102 -0
  363. data/Packages/mootools-history/package.yml +21 -0
  364. data/Packages/mootools-mobile/Demos/custom-event.js +91 -0
  365. data/Packages/mootools-mobile/Demos/demo.css +13 -0
  366. data/Packages/mootools-mobile/Demos/index.html +99 -0
  367. data/Packages/mootools-mobile/Demos/mootools-core.js +3831 -0
  368. data/Packages/mootools-mobile/Demos/pinch.html +60 -0
  369. data/Packages/mootools-mobile/Demos/style.css +121 -0
  370. data/Packages/mootools-mobile/Demos/swipe.html +45 -0
  371. data/Packages/mootools-mobile/Demos/touchhold.html +50 -0
  372. data/Packages/mootools-mobile/LICENSE +24 -0
  373. data/Packages/mootools-mobile/README.md +173 -0
  374. data/Packages/mootools-mobile/Source/Browser/Features.Touch.js +52 -0
  375. data/Packages/mootools-mobile/Source/Browser/Mobile.js +37 -0
  376. data/Packages/mootools-mobile/Source/Desktop/Mouse.js +60 -0
  377. data/Packages/mootools-mobile/Source/Touch/Click.js +30 -0
  378. data/Packages/mootools-mobile/Source/Touch/Pinch.js +66 -0
  379. data/Packages/mootools-mobile/Source/Touch/Swipe.js +95 -0
  380. data/Packages/mootools-mobile/Source/Touch/Touch.js +62 -0
  381. data/Packages/mootools-mobile/Source/Touch/Touchhold.js +69 -0
  382. data/Packages/mootools-mobile/package.yml +24 -0
  383. data/Packages/mootools-more/Docs/Class/Chain.Wait.md +69 -0
  384. data/Packages/mootools-more/Docs/Class/Class.Binds.md +84 -0
  385. data/Packages/mootools-more/Docs/Class/Class.Occlude.md +61 -0
  386. data/Packages/mootools-more/Docs/Class/Class.Refactor.md +65 -0
  387. data/Packages/mootools-more/Docs/Class/Events.Pseudos.md +125 -0
  388. data/Packages/mootools-more/Docs/Drag/Drag.Move.md +147 -0
  389. data/Packages/mootools-more/Docs/Drag/Drag.md +206 -0
  390. data/Packages/mootools-more/Docs/Drag/Slider.md +249 -0
  391. data/Packages/mootools-more/Docs/Drag/Sortables.md +287 -0
  392. data/Packages/mootools-more/Docs/Element/Element.Delegation.md +120 -0
  393. data/Packages/mootools-more/Docs/Element/Element.Event.Pseudos.Keys.md +67 -0
  394. data/Packages/mootools-more/Docs/Element/Element.Event.Pseudos.md +124 -0
  395. data/Packages/mootools-more/Docs/Element/Element.Forms.md +231 -0
  396. data/Packages/mootools-more/Docs/Element/Element.Measure.md +130 -0
  397. data/Packages/mootools-more/Docs/Element/Element.Pin.md +56 -0
  398. data/Packages/mootools-more/Docs/Element/Element.Position.md +77 -0
  399. data/Packages/mootools-more/Docs/Element/Element.Shortcuts.md +121 -0
  400. data/Packages/mootools-more/Docs/Element/Elements.From.md +32 -0
  401. data/Packages/mootools-more/Docs/Forms/Form.Request.Append.md +36 -0
  402. data/Packages/mootools-more/Docs/Forms/Form.Request.md +141 -0
  403. data/Packages/mootools-more/Docs/Forms/Form.Validator.Extras.md +157 -0
  404. data/Packages/mootools-more/Docs/Forms/Form.Validator.Inline.md +100 -0
  405. data/Packages/mootools-more/Docs/Forms/Form.Validator.md +666 -0
  406. data/Packages/mootools-more/Docs/Forms/OverText.md +237 -0
  407. data/Packages/mootools-more/Docs/Fx/Fx.Accordion.md +178 -0
  408. data/Packages/mootools-more/Docs/Fx/Fx.Elements.md +114 -0
  409. data/Packages/mootools-more/Docs/Fx/Fx.Move.md +160 -0
  410. data/Packages/mootools-more/Docs/Fx/Fx.Reveal.md +235 -0
  411. data/Packages/mootools-more/Docs/Fx/Fx.Scroll.md +291 -0
  412. data/Packages/mootools-more/Docs/Fx/Fx.Slide.md +272 -0
  413. data/Packages/mootools-more/Docs/Fx/Fx.SmoothScroll.md +50 -0
  414. data/Packages/mootools-more/Docs/Fx/Fx.Sort.md +201 -0
  415. data/Packages/mootools-more/Docs/Interface/HtmlTable.Select.md +246 -0
  416. data/Packages/mootools-more/Docs/Interface/HtmlTable.Sort.md +193 -0
  417. data/Packages/mootools-more/Docs/Interface/HtmlTable.Zebra.md +94 -0
  418. data/Packages/mootools-more/Docs/Interface/HtmlTable.md +250 -0
  419. data/Packages/mootools-more/Docs/Interface/Keyboard.Extras.md +163 -0
  420. data/Packages/mootools-more/Docs/Interface/Keyboard.md +226 -0
  421. data/Packages/mootools-more/Docs/Interface/Mask.md +232 -0
  422. data/Packages/mootools-more/Docs/Interface/Scroller.md +97 -0
  423. data/Packages/mootools-more/Docs/Interface/Spinner.md +284 -0
  424. data/Packages/mootools-more/Docs/Interface/Tips.md +267 -0
  425. data/Packages/mootools-more/Docs/Locale/Date.md +222 -0
  426. data/Packages/mootools-more/Docs/Locale/Form.Validator.md +197 -0
  427. data/Packages/mootools-more/Docs/Locale/Locale.Set.From.md +29 -0
  428. data/Packages/mootools-more/Docs/Locale/Locale.md +208 -0
  429. data/Packages/mootools-more/Docs/Locale/Number.md +97 -0
  430. data/Packages/mootools-more/Docs/More/More.md +20 -0
  431. data/Packages/mootools-more/Docs/Request/Request.JSONP.md +126 -0
  432. data/Packages/mootools-more/Docs/Request/Request.Periodical.md +82 -0
  433. data/Packages/mootools-more/Docs/Request/Request.Queue.md +337 -0
  434. data/Packages/mootools-more/Docs/Types/Array.Extras.md +193 -0
  435. data/Packages/mootools-more/Docs/Types/Date.Extras.md +97 -0
  436. data/Packages/mootools-more/Docs/Types/Date.md +564 -0
  437. data/Packages/mootools-more/Docs/Types/Hash.Extras.md +111 -0
  438. data/Packages/mootools-more/Docs/Types/Hash.md +633 -0
  439. data/Packages/mootools-more/Docs/Types/Number.Format.md +91 -0
  440. data/Packages/mootools-more/Docs/Types/Object.Extras.md +134 -0
  441. data/Packages/mootools-more/Docs/Types/String.Extras.md +188 -0
  442. data/Packages/mootools-more/Docs/Types/String.QueryString.md +56 -0
  443. data/Packages/mootools-more/Docs/Types/URI.Relative.md +46 -0
  444. data/Packages/mootools-more/Docs/Types/URI.md +213 -0
  445. data/Packages/mootools-more/Docs/Utilities/Assets.md +175 -0
  446. data/Packages/mootools-more/Docs/Utilities/Color.md +276 -0
  447. data/Packages/mootools-more/Docs/Utilities/Group.md +75 -0
  448. data/Packages/mootools-more/Docs/Utilities/Hash.Cookie.md +117 -0
  449. data/Packages/mootools-more/Docs/Utilities/IframeShim.md +136 -0
  450. data/Packages/mootools-more/Docs/Utilities/Table.md +114 -0
  451. data/Packages/mootools-more/Docs/license.md +8 -0
  452. data/Packages/mootools-more/README.md +244 -0
  453. data/Packages/mootools-more/Source/Class/Chain.Wait.js +63 -0
  454. data/Packages/mootools-more/Source/Class/Class.Binds.js +37 -0
  455. data/Packages/mootools-more/Source/Class/Class.Occlude.js +38 -0
  456. data/Packages/mootools-more/Source/Class/Class.Refactor.js +41 -0
  457. data/Packages/mootools-more/Source/Class/Events.Pseudos.js +180 -0
  458. data/Packages/mootools-more/Source/Drag/Drag.Move.js +197 -0
  459. data/Packages/mootools-more/Source/Drag/Drag.js +234 -0
  460. data/Packages/mootools-more/Source/Drag/Slider.js +225 -0
  461. data/Packages/mootools-more/Source/Drag/Sortables.js +233 -0
  462. data/Packages/mootools-more/Source/Element/Element.Delegation.js +140 -0
  463. data/Packages/mootools-more/Source/Element/Element.Event.Pseudos.Keys.js +82 -0
  464. data/Packages/mootools-more/Source/Element/Element.Event.Pseudos.js +36 -0
  465. data/Packages/mootools-more/Source/Element/Element.Forms.js +140 -0
  466. data/Packages/mootools-more/Source/Element/Element.Measure.js +170 -0
  467. data/Packages/mootools-more/Source/Element/Element.Pin.js +130 -0
  468. data/Packages/mootools-more/Source/Element/Element.Position.js +235 -0
  469. data/Packages/mootools-more/Source/Element/Element.Shortcuts.js +76 -0
  470. data/Packages/mootools-more/Source/Element/Elements.From.js +40 -0
  471. data/Packages/mootools-more/Source/Forms/Form.Request.Append.js +77 -0
  472. data/Packages/mootools-more/Source/Forms/Form.Request.js +203 -0
  473. data/Packages/mootools-more/Source/Forms/Form.Validator.Extras.js +231 -0
  474. data/Packages/mootools-more/Source/Forms/Form.Validator.Inline.js +190 -0
  475. data/Packages/mootools-more/Source/Forms/Form.Validator.js +523 -0
  476. data/Packages/mootools-more/Source/Forms/OverText.js +258 -0
  477. data/Packages/mootools-more/Source/Fx/Fx.Accordion.js +240 -0
  478. data/Packages/mootools-more/Source/Fx/Fx.Elements.js +74 -0
  479. data/Packages/mootools-more/Source/Fx/Fx.Move.js +71 -0
  480. data/Packages/mootools-more/Source/Fx/Fx.Reveal.js +246 -0
  481. data/Packages/mootools-more/Source/Fx/Fx.Scroll.js +180 -0
  482. data/Packages/mootools-more/Source/Fx/Fx.Slide.js +170 -0
  483. data/Packages/mootools-more/Source/Fx/Fx.SmoothScroll.js +70 -0
  484. data/Packages/mootools-more/Source/Fx/Fx.Sort.js +172 -0
  485. data/Packages/mootools-more/Source/Interface/HtmlTable.Select.js +352 -0
  486. data/Packages/mootools-more/Source/Interface/HtmlTable.Sort.js +349 -0
  487. data/Packages/mootools-more/Source/Interface/HtmlTable.Zebra.js +64 -0
  488. data/Packages/mootools-more/Source/Interface/HtmlTable.js +150 -0
  489. data/Packages/mootools-more/Source/Interface/Keyboard.Extras.js +109 -0
  490. data/Packages/mootools-more/Source/Interface/Keyboard.js +242 -0
  491. data/Packages/mootools-more/Source/Interface/Mask.js +211 -0
  492. data/Packages/mootools-more/Source/Interface/Scroller.js +104 -0
  493. data/Packages/mootools-more/Source/Interface/Spinner.js +216 -0
  494. data/Packages/mootools-more/Source/Interface/Tips.js +259 -0
  495. data/Packages/mootools-more/Source/Locale/Locale.EU.Number.js +30 -0
  496. data/Packages/mootools-more/Source/Locale/Locale.Set.From.js +52 -0
  497. data/Packages/mootools-more/Source/Locale/Locale.ar.Date.js +28 -0
  498. data/Packages/mootools-more/Source/Locale/Locale.ar.Form.Validator.js +40 -0
  499. data/Packages/mootools-more/Source/Locale/Locale.ca-CA.Date.js +55 -0
  500. data/Packages/mootools-more/Source/Locale/Locale.ca-CA.Form.Validator.js +55 -0
  501. data/Packages/mootools-more/Source/Locale/Locale.cs-CZ.Date.js +80 -0
  502. data/Packages/mootools-more/Source/Locale/Locale.cs-CZ.Form.Validator.js +55 -0
  503. data/Packages/mootools-more/Source/Locale/Locale.da-DK.Date.js +68 -0
  504. data/Packages/mootools-more/Source/Locale/Locale.da-DK.Form.Validator.js +54 -0
  505. data/Packages/mootools-more/Source/Locale/Locale.de-CH.Date.js +22 -0
  506. data/Packages/mootools-more/Source/Locale/Locale.de-CH.Form.Validator.js +55 -0
  507. data/Packages/mootools-more/Source/Locale/Locale.de-DE.Date.js +70 -0
  508. data/Packages/mootools-more/Source/Locale/Locale.de-DE.Form.Validator.js +57 -0
  509. data/Packages/mootools-more/Source/Locale/Locale.de-DE.Number.js +22 -0
  510. data/Packages/mootools-more/Source/Locale/Locale.en-GB.Date.js +29 -0
  511. data/Packages/mootools-more/Source/Locale/Locale.en-US.Date.js +70 -0
  512. data/Packages/mootools-more/Source/Locale/Locale.en-US.Form.Validator.js +55 -0
  513. data/Packages/mootools-more/Source/Locale/Locale.en-US.Number.js +51 -0
  514. data/Packages/mootools-more/Source/Locale/Locale.es-AR.Date.js +23 -0
  515. data/Packages/mootools-more/Source/Locale/Locale.es-AR.Form.Validator.js +54 -0
  516. data/Packages/mootools-more/Source/Locale/Locale.es-ES.Date.js +67 -0
  517. data/Packages/mootools-more/Source/Locale/Locale.es-ES.Form.Validator.js +54 -0
  518. data/Packages/mootools-more/Source/Locale/Locale.es-VE.Date.js +22 -0
  519. data/Packages/mootools-more/Source/Locale/Locale.es-VE.Form.Validator.js +34 -0
  520. data/Packages/mootools-more/Source/Locale/Locale.es-VE.Number.js +44 -0
  521. data/Packages/mootools-more/Source/Locale/Locale.et-EE.Date.js +67 -0
  522. data/Packages/mootools-more/Source/Locale/Locale.et-EE.Form.Validator.js +54 -0
  523. data/Packages/mootools-more/Source/Locale/Locale.fa.Date.js +66 -0
  524. data/Packages/mootools-more/Source/Locale/Locale.fa.Form.Validator.js +55 -0
  525. data/Packages/mootools-more/Source/Locale/Locale.fi-FI.Date.js +72 -0
  526. data/Packages/mootools-more/Source/Locale/Locale.fi-FI.Form.Validator.js +55 -0
  527. data/Packages/mootools-more/Source/Locale/Locale.fi-FI.Number.js +26 -0
  528. data/Packages/mootools-more/Source/Locale/Locale.fr-FR.Date.js +70 -0
  529. data/Packages/mootools-more/Source/Locale/Locale.fr-FR.Form.Validator.js +56 -0
  530. data/Packages/mootools-more/Source/Locale/Locale.fr-FR.Number.js +27 -0
  531. data/Packages/mootools-more/Source/Locale/Locale.he-IL.Date.js +67 -0
  532. data/Packages/mootools-more/Source/Locale/Locale.he-IL.Form.Validator.js +55 -0
  533. data/Packages/mootools-more/Source/Locale/Locale.he-IL.Number.js +30 -0
  534. data/Packages/mootools-more/Source/Locale/Locale.hu-HU.Date.js +67 -0
  535. data/Packages/mootools-more/Source/Locale/Locale.hu-HU.Form.Validator.js +55 -0
  536. data/Packages/mootools-more/Source/Locale/Locale.it-IT.Date.js +68 -0
  537. data/Packages/mootools-more/Source/Locale/Locale.it-IT.Form.Validator.js +55 -0
  538. data/Packages/mootools-more/Source/Locale/Locale.ja-JP.Date.js +67 -0
  539. data/Packages/mootools-more/Source/Locale/Locale.ja-JP.Form.Validator.js +54 -0
  540. data/Packages/mootools-more/Source/Locale/Locale.ja-JP.Number.js +31 -0
  541. data/Packages/mootools-more/Source/Locale/Locale.js +188 -0
  542. data/Packages/mootools-more/Source/Locale/Locale.nl-NL.Date.js +68 -0
  543. data/Packages/mootools-more/Source/Locale/Locale.nl-NL.Form.Validator.js +57 -0
  544. data/Packages/mootools-more/Source/Locale/Locale.nl-NL.Number.js +25 -0
  545. data/Packages/mootools-more/Source/Locale/Locale.no-NO.Date.js +39 -0
  546. data/Packages/mootools-more/Source/Locale/Locale.no-NO.Form.Validator.js +40 -0
  547. data/Packages/mootools-more/Source/Locale/Locale.pl-PL.Date.js +57 -0
  548. data/Packages/mootools-more/Source/Locale/Locale.pl-PL.Form.Validator.js +54 -0
  549. data/Packages/mootools-more/Source/Locale/Locale.pt-BR.Date.js +27 -0
  550. data/Packages/mootools-more/Source/Locale/Locale.pt-BR.Form.Validator.js +55 -0
  551. data/Packages/mootools-more/Source/Locale/Locale.pt-BR.Number.js +33 -0
  552. data/Packages/mootools-more/Source/Locale/Locale.pt-PT.Date.js +67 -0
  553. data/Packages/mootools-more/Source/Locale/Locale.pt-PT.Form.Validator.js +40 -0
  554. data/Packages/mootools-more/Source/Locale/Locale.ru-RU.Date.js +98 -0
  555. data/Packages/mootools-more/Source/Locale/Locale.ru-RU.Form.Validator.js +46 -0
  556. data/Packages/mootools-more/Source/Locale/Locale.si-SI.Date.js +75 -0
  557. data/Packages/mootools-more/Source/Locale/Locale.si-SI.Form.Validator.js +55 -0
  558. data/Packages/mootools-more/Source/Locale/Locale.sv-SE.Date.js +55 -0
  559. data/Packages/mootools-more/Source/Locale/Locale.sv-SE.Form.Validator.js +54 -0
  560. data/Packages/mootools-more/Source/Locale/Locale.sv-SE.Number.js +29 -0
  561. data/Packages/mootools-more/Source/Locale/Locale.tr-TR.Date.js +67 -0
  562. data/Packages/mootools-more/Source/Locale/Locale.tr-TR.Form.Validator.js +55 -0
  563. data/Packages/mootools-more/Source/Locale/Locale.tr-TR.Number.js +29 -0
  564. data/Packages/mootools-more/Source/Locale/Locale.uk-UA.Date.js +82 -0
  565. data/Packages/mootools-more/Source/Locale/Locale.uk-UA.Form.Validator.js +54 -0
  566. data/Packages/mootools-more/Source/Locale/Locale.zh-CH.Date.js +117 -0
  567. data/Packages/mootools-more/Source/Locale/Locale.zh-CH.Form.Validator.js +110 -0
  568. data/Packages/mootools-more/Source/Locale/Locale.zh-CH.Number.js +32 -0
  569. data/Packages/mootools-more/Source/More/More.js +33 -0
  570. data/Packages/mootools-more/Source/Request/Request.JSONP.js +142 -0
  571. data/Packages/mootools-more/Source/Request/Request.Periodical.js +51 -0
  572. data/Packages/mootools-more/Source/Request/Request.Queue.js +212 -0
  573. data/Packages/mootools-more/Source/Types/Array.Extras.js +79 -0
  574. data/Packages/mootools-more/Source/Types/Date.Extras.js +117 -0
  575. data/Packages/mootools-more/Source/Types/Date.js +559 -0
  576. data/Packages/mootools-more/Source/Types/Hash.Extras.js +38 -0
  577. data/Packages/mootools-more/Source/Types/Hash.js +145 -0
  578. data/Packages/mootools-more/Source/Types/Number.Format.js +105 -0
  579. data/Packages/mootools-more/Source/Types/Object.Extras.js +66 -0
  580. data/Packages/mootools-more/Source/Types/String.Extras.js +148 -0
  581. data/Packages/mootools-more/Source/Types/String.QueryString.js +68 -0
  582. data/Packages/mootools-more/Source/Types/URI.Relative.js +57 -0
  583. data/Packages/mootools-more/Source/Types/URI.js +169 -0
  584. data/Packages/mootools-more/Source/Utilities/Assets.js +131 -0
  585. data/Packages/mootools-more/Source/Utilities/Color.js +162 -0
  586. data/Packages/mootools-more/Source/Utilities/Group.js +60 -0
  587. data/Packages/mootools-more/Source/Utilities/Hash.Cookie.js +61 -0
  588. data/Packages/mootools-more/Source/Utilities/IframeShim.js +130 -0
  589. data/Packages/mootools-more/Source/Utilities/Table.js +57 -0
  590. data/Packages/mootools-more/Source/license.txt +21 -0
  591. data/Packages/mootools-more/Styles/Interface/Mask/mask.css +8 -0
  592. data/Packages/mootools-more/Styles/Interface/Spinner/spinner.css +19 -0
  593. data/Packages/mootools-more/Styles/Interface/Spinner/spinner.gif +0 -0
  594. data/Packages/mootools-more/Tests/Interactive/Class/Chain.Wait_(tween).html +14 -0
  595. data/Packages/mootools-more/Tests/Interactive/Class/Chain.Wait_(tween).yml +2 -0
  596. data/Packages/mootools-more/Tests/Interactive/Drag/Drag.Move_(basic).html +39 -0
  597. data/Packages/mootools-more/Tests/Interactive/Drag/Drag.Move_(basic).yml +3 -0
  598. data/Packages/mootools-more/Tests/Interactive/Drag/Drag.Move_(container).html +130 -0
  599. data/Packages/mootools-more/Tests/Interactive/Drag/Drag.Move_(container).yml +3 -0
  600. data/Packages/mootools-more/Tests/Interactive/Drag/Drag.Move_(drag_in_drag).html +46 -0
  601. data/Packages/mootools-more/Tests/Interactive/Drag/Drag.Move_(drag_in_drag).yml +3 -0
  602. data/Packages/mootools-more/Tests/Interactive/Drag/Drag.Move_(drag_in_drag_border).html +48 -0
  603. data/Packages/mootools-more/Tests/Interactive/Drag/Drag.Move_(drag_in_drag_border).yml +3 -0
  604. data/Packages/mootools-more/Tests/Interactive/Drag/Drag.Move_(droppables).html +88 -0
  605. data/Packages/mootools-more/Tests/Interactive/Drag/Drag.Move_(droppables).yml +3 -0
  606. data/Packages/mootools-more/Tests/Interactive/Drag/Drag.Move_(no_offsetParent).html +42 -0
  607. data/Packages/mootools-more/Tests/Interactive/Drag/Drag.Move_(no_offsetParent).yml +3 -0
  608. data/Packages/mootools-more/Tests/Interactive/Drag/Drag.Move_(position_right_bottom).html +41 -0
  609. data/Packages/mootools-more/Tests/Interactive/Drag/Drag.Move_(style_false).html +23 -0
  610. data/Packages/mootools-more/Tests/Interactive/Drag/Drag.Move_(style_false).yml +3 -0
  611. data/Packages/mootools-more/Tests/Interactive/Drag/Drag_(resize).html +48 -0
  612. data/Packages/mootools-more/Tests/Interactive/Drag/Drag_(resize).yml +2 -0
  613. data/Packages/mootools-more/Tests/Interactive/Drag/Slider.html +169 -0
  614. data/Packages/mootools-more/Tests/Interactive/Drag/Slider.yml +2 -0
  615. data/Packages/mootools-more/Tests/Interactive/Drag/Sortables_(images).html +19 -0
  616. data/Packages/mootools-more/Tests/Interactive/Drag/Sortables_(images).yml +2 -0
  617. data/Packages/mootools-more/Tests/Interactive/Drag/Sortables_(multi).html +44 -0
  618. data/Packages/mootools-more/Tests/Interactive/Drag/Sortables_(multi).yml +2 -0
  619. data/Packages/mootools-more/Tests/Interactive/Drag/Sortables_(revert).html +51 -0
  620. data/Packages/mootools-more/Tests/Interactive/Drag/Sortables_(single).html +67 -0
  621. data/Packages/mootools-more/Tests/Interactive/Drag/Sortables_(single).yml +2 -0
  622. data/Packages/mootools-more/Tests/Interactive/Drag/Sortables_(table).html +46 -0
  623. data/Packages/mootools-more/Tests/Interactive/Drag/Sortables_(table).yml +2 -0
  624. data/Packages/mootools-more/Tests/Interactive/Element/Element.Delegation.html +89 -0
  625. data/Packages/mootools-more/Tests/Interactive/Element/Element.Delegation.yml +2 -0
  626. data/Packages/mootools-more/Tests/Interactive/Element/Element.Delegation_(focus_blur).yml +2 -0
  627. data/Packages/mootools-more/Tests/Interactive/Element/Element.Delegation_(non_bubbling).html +126 -0
  628. data/Packages/mootools-more/Tests/Interactive/Element/Element.Event.Pseudos.Keys.html +39 -0
  629. data/Packages/mootools-more/Tests/Interactive/Element/Element.Event.Pseudos.Keys.yml +3 -0
  630. data/Packages/mootools-more/Tests/Interactive/Element/Element.Event.Pseudos.html +56 -0
  631. data/Packages/mootools-more/Tests/Interactive/Element/Element.Forms.html +125 -0
  632. data/Packages/mootools-more/Tests/Interactive/Element/Element.Forms.yml +2 -0
  633. data/Packages/mootools-more/Tests/Interactive/Element/Element.Pin.html +46 -0
  634. data/Packages/mootools-more/Tests/Interactive/Element/Element.Pin.yml +2 -0
  635. data/Packages/mootools-more/Tests/Interactive/Element/Element.Position_(basic).html +118 -0
  636. data/Packages/mootools-more/Tests/Interactive/Element/Element.Position_(basic).yml +2 -0
  637. data/Packages/mootools-more/Tests/Interactive/Element/Element.Position_(scrolled).html +47 -0
  638. data/Packages/mootools-more/Tests/Interactive/Element/Element.Position_(scrolled).yml +2 -0
  639. data/Packages/mootools-more/Tests/Interactive/Element/Element.Position_(scrolling).html +46 -0
  640. data/Packages/mootools-more/Tests/Interactive/Element/Element.Position_(scrolling).yml +2 -0
  641. data/Packages/mootools-more/Tests/Interactive/Element/Element.Shortcuts.html +171 -0
  642. data/Packages/mootools-more/Tests/Interactive/Element/Element.Shortcuts.yml +2 -0
  643. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Request.Append.html +29 -0
  644. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Request.Append.yml +3 -0
  645. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Request.html +49 -0
  646. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Request.yml +2 -0
  647. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Validator.Extras.html +88 -0
  648. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Validator.Extras.yml +3 -0
  649. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Validator.Extras_(data-).html +87 -0
  650. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Validator.Extras_(data-).yml +3 -0
  651. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Validator.Inline.html +54 -0
  652. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Validator.Inline.yml +3 -0
  653. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Validator.Inline_(data-).html +54 -0
  654. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Validator.Inline_(data-).yml +3 -0
  655. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Validator.Inline_(data-warnings).html +42 -0
  656. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Validator.Inline_(data-warnings).yml +3 -0
  657. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Validator.Inline_(onBlur).html +60 -0
  658. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Validator.Inline_(onBlur).yml +3 -0
  659. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Validator.Inline_(onChange).html +68 -0
  660. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Validator.Inline_(onChange).yml +3 -0
  661. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Validator.Inline_(single_input).html +33 -0
  662. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Validator.Inline_(single_input).yml +3 -0
  663. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Validator.Inline_(warnings).html +42 -0
  664. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Validator.Inline_(warnings).yml +3 -0
  665. data/Packages/mootools-more/Tests/Interactive/Forms/OverText.html +116 -0
  666. data/Packages/mootools-more/Tests/Interactive/Forms/OverText.yml +2 -0
  667. data/Packages/mootools-more/Tests/Interactive/Fx/Fx.Accordion.html +152 -0
  668. data/Packages/mootools-more/Tests/Interactive/Fx/Fx.Accordion.yml +2 -0
  669. data/Packages/mootools-more/Tests/Interactive/Fx/Fx.Elements.html +34 -0
  670. data/Packages/mootools-more/Tests/Interactive/Fx/Fx.Elements.yml +2 -0
  671. data/Packages/mootools-more/Tests/Interactive/Fx/Fx.Move.html +91 -0
  672. data/Packages/mootools-more/Tests/Interactive/Fx/Fx.Move.yml +2 -0
  673. data/Packages/mootools-more/Tests/Interactive/Fx/Fx.Reveal.html +42 -0
  674. data/Packages/mootools-more/Tests/Interactive/Fx/Fx.Reveal.yml +2 -0
  675. data/Packages/mootools-more/Tests/Interactive/Fx/Fx.Scroll_(element).html +107 -0
  676. data/Packages/mootools-more/Tests/Interactive/Fx/Fx.Scroll_(element).yml +2 -0
  677. data/Packages/mootools-more/Tests/Interactive/Fx/Fx.Scroll_(window).html +88 -0
  678. data/Packages/mootools-more/Tests/Interactive/Fx/Fx.Scroll_(window).yml +2 -0
  679. data/Packages/mootools-more/Tests/Interactive/Fx/Fx.Slide.html +63 -0
  680. data/Packages/mootools-more/Tests/Interactive/Fx/Fx.Slide.yml +2 -0
  681. data/Packages/mootools-more/Tests/Interactive/Fx/Fx.SmoothScroll.html +77 -0
  682. data/Packages/mootools-more/Tests/Interactive/Fx/Fx.SmoothScroll.yml +3 -0
  683. data/Packages/mootools-more/Tests/Interactive/Fx/Fx.Sort.html +100 -0
  684. data/Packages/mootools-more/Tests/Interactive/Fx/Fx.Sort.yml +2 -0
  685. data/Packages/mootools-more/Tests/Interactive/Interface/HtmlTable.Select.html +109 -0
  686. data/Packages/mootools-more/Tests/Interactive/Interface/HtmlTable.Select.yml +3 -0
  687. data/Packages/mootools-more/Tests/Interactive/Interface/HtmlTable.html +46 -0
  688. data/Packages/mootools-more/Tests/Interactive/Interface/HtmlTable.yml +2 -0
  689. data/Packages/mootools-more/Tests/Interactive/Interface/HtmlTable_(empty_and_refill).html +46 -0
  690. data/Packages/mootools-more/Tests/Interactive/Interface/HtmlTable_(empty_and_refill).yml +2 -0
  691. data/Packages/mootools-more/Tests/Interactive/Interface/HtmlTable_(id).html +43 -0
  692. data/Packages/mootools-more/Tests/Interactive/Interface/HtmlTable_(id).yml +2 -0
  693. data/Packages/mootools-more/Tests/Interactive/Interface/HtmlTable_(sortable).html +256 -0
  694. data/Packages/mootools-more/Tests/Interactive/Interface/HtmlTable_(sortable).yml +3 -0
  695. data/Packages/mootools-more/Tests/Interactive/Interface/HtmlTable_(zebra).html +93 -0
  696. data/Packages/mootools-more/Tests/Interactive/Interface/HtmlTable_(zebra).yml +3 -0
  697. data/Packages/mootools-more/Tests/Interactive/Interface/Keyboard_(nested).html +129 -0
  698. data/Packages/mootools-more/Tests/Interactive/Interface/Keyboard_(nested).yml +2 -0
  699. data/Packages/mootools-more/Tests/Interactive/Interface/Keyboard_(single).html +93 -0
  700. data/Packages/mootools-more/Tests/Interactive/Interface/Keyboard_(single).yml +2 -0
  701. data/Packages/mootools-more/Tests/Interactive/Interface/Mask.html +63 -0
  702. data/Packages/mootools-more/Tests/Interactive/Interface/Mask.yml +2 -0
  703. data/Packages/mootools-more/Tests/Interactive/Interface/Scroller.html +40 -0
  704. data/Packages/mootools-more/Tests/Interactive/Interface/Scroller.yml +2 -0
  705. data/Packages/mootools-more/Tests/Interactive/Interface/Scroller_(With_Drag).html +45 -0
  706. data/Packages/mootools-more/Tests/Interactive/Interface/Scroller_(With_Drag).yml +3 -0
  707. data/Packages/mootools-more/Tests/Interactive/Interface/Spinner.html +125 -0
  708. data/Packages/mootools-more/Tests/Interactive/Interface/Spinner.yml +3 -0
  709. data/Packages/mootools-more/Tests/Interactive/Interface/Tips.html +156 -0
  710. data/Packages/mootools-more/Tests/Interactive/Interface/Tips.yml +2 -0
  711. data/Packages/mootools-more/Tests/Interactive/Interface/Tips_(offset).html +64 -0
  712. data/Packages/mootools-more/Tests/Interactive/Interface/Tips_(offset).yml +3 -0
  713. data/Packages/mootools-more/Tests/Interactive/README.md +3 -0
  714. data/Packages/mootools-more/Tests/Interactive/Request/Request.JSONP.html +22 -0
  715. data/Packages/mootools-more/Tests/Interactive/Request/Request.JSONP.yml +2 -0
  716. data/Packages/mootools-more/Tests/Interactive/Request/Request.JSONP_(async).html +33 -0
  717. data/Packages/mootools-more/Tests/Interactive/Request/Request.JSONP_(async).yml +2 -0
  718. data/Packages/mootools-more/Tests/Interactive/Request/Request.JSONP_(timeout).html +46 -0
  719. data/Packages/mootools-more/Tests/Interactive/Request/Request.JSONP_(timeout).yml +2 -0
  720. data/Packages/mootools-more/Tests/Interactive/Request/Request.Periodical.html +38 -0
  721. data/Packages/mootools-more/Tests/Interactive/Request/Request.Periodical.yml +2 -0
  722. data/Packages/mootools-more/Tests/Interactive/Request/Request.Queue.html +42 -0
  723. data/Packages/mootools-more/Tests/Interactive/Request/Request.Queue.yml +2 -0
  724. data/Packages/mootools-more/Tests/Interactive/Utilities/Assets.html +78 -0
  725. data/Packages/mootools-more/Tests/Interactive/Utilities/Assets.yml +2 -0
  726. data/Packages/mootools-more/Tests/Interactive/Utilities/IframeShim.html +36 -0
  727. data/Packages/mootools-more/Tests/Interactive/Utilities/IframeShim.yml +2 -0
  728. data/Packages/mootools-more/Tests/Interactive/_assets/Assets.css.test.css +24 -0
  729. data/Packages/mootools-more/Tests/Interactive/_assets/Assets.js.test.js +3 -0
  730. data/Packages/mootools-more/Tests/Interactive/_assets/bullet_arrow_down.png +0 -0
  731. data/Packages/mootools-more/Tests/Interactive/_assets/bullet_arrow_up.png +0 -0
  732. data/Packages/mootools-more/Tests/Interactive/_assets/cow.png +0 -0
  733. data/Packages/mootools-more/Tests/Interactive/_assets/mask.css +8 -0
  734. data/Packages/mootools-more/Tests/Interactive/_assets/mediaplayer.swf +0 -0
  735. data/Packages/mootools-more/Tests/Interactive/_assets/mootools.png +0 -0
  736. data/Packages/mootools-more/Tests/Interactive/_assets/spinner.css +19 -0
  737. data/Packages/mootools-more/Tests/Interactive/_assets/spinner.gif +0 -0
  738. data/Packages/mootools-more/Tests/Interactive/_assets/video.flv +0 -0
  739. data/Packages/mootools-more/Tests/Specs/1.3/Class/Chain.Wait.js +74 -0
  740. data/Packages/mootools-more/Tests/Specs/1.3/Class/Class.Binds.js +91 -0
  741. data/Packages/mootools-more/Tests/Specs/1.3/Class/Class.Occlude.js +49 -0
  742. data/Packages/mootools-more/Tests/Specs/1.3/Class/Class.Refactor.js +103 -0
  743. data/Packages/mootools-more/Tests/Specs/1.3/Class/Events.Pseudos.js +367 -0
  744. data/Packages/mootools-more/Tests/Specs/1.3/Element/Element.Delegation.js +32 -0
  745. data/Packages/mootools-more/Tests/Specs/1.3/Element/Element.Event.Pseudos.Keys.js +33 -0
  746. data/Packages/mootools-more/Tests/Specs/1.3/Element/Element.Event.Pseudos.js +69 -0
  747. data/Packages/mootools-more/Tests/Specs/1.3/Element/Element.Forms.js +155 -0
  748. data/Packages/mootools-more/Tests/Specs/1.3/Element/Element.Measure.js +92 -0
  749. data/Packages/mootools-more/Tests/Specs/1.3/Element/Element.Pin.js +131 -0
  750. data/Packages/mootools-more/Tests/Specs/1.3/Element/Element.Position.js +181 -0
  751. data/Packages/mootools-more/Tests/Specs/1.3/Element/Element.Shortcuts.js +93 -0
  752. data/Packages/mootools-more/Tests/Specs/1.3/Element/Elements.From.js +22 -0
  753. data/Packages/mootools-more/Tests/Specs/1.3/Forms/Form.Validator.js +384 -0
  754. data/Packages/mootools-more/Tests/Specs/1.3/Fx/Fx.Reveal.js +24 -0
  755. data/Packages/mootools-more/Tests/Specs/1.3/Fx/Fx.Slide.js +21 -0
  756. data/Packages/mootools-more/Tests/Specs/1.3/Interface/HtmlTable.Select.js +153 -0
  757. data/Packages/mootools-more/Tests/Specs/1.3/Interface/HtmlTable.Sort.js +181 -0
  758. data/Packages/mootools-more/Tests/Specs/1.3/Interface/HtmlTable.Zebra.js +39 -0
  759. data/Packages/mootools-more/Tests/Specs/1.3/Interface/HtmlTable.js +153 -0
  760. data/Packages/mootools-more/Tests/Specs/1.3/Interface/Keyboard.js +130 -0
  761. data/Packages/mootools-more/Tests/Specs/1.3/Locale/Locale.js +104 -0
  762. data/Packages/mootools-more/Tests/Specs/1.3/Request/Request.JSONP.js +55 -0
  763. data/Packages/mootools-more/Tests/Specs/1.3/Types/Array.Extras.js +119 -0
  764. data/Packages/mootools-more/Tests/Specs/1.3/Types/Date.Extras.js +80 -0
  765. data/Packages/mootools-more/Tests/Specs/1.3/Types/Date.js +709 -0
  766. data/Packages/mootools-more/Tests/Specs/1.3/Types/Hash.Extras.js +21 -0
  767. data/Packages/mootools-more/Tests/Specs/1.3/Types/Hash.js +202 -0
  768. data/Packages/mootools-more/Tests/Specs/1.3/Types/Number.Format.js +90 -0
  769. data/Packages/mootools-more/Tests/Specs/1.3/Types/Object.Extras.js +105 -0
  770. data/Packages/mootools-more/Tests/Specs/1.3/Types/Object.Extras_client.js +17 -0
  771. data/Packages/mootools-more/Tests/Specs/1.3/Types/String.Extras.js +72 -0
  772. data/Packages/mootools-more/Tests/Specs/1.3/Types/String.QueryString.js +63 -0
  773. data/Packages/mootools-more/Tests/Specs/1.3/Types/URI.Relative.js +114 -0
  774. data/Packages/mootools-more/Tests/Specs/1.3/Types/URI.js +123 -0
  775. data/Packages/mootools-more/Tests/Specs/1.3/Utilities/Assets.js +211 -0
  776. data/Packages/mootools-more/Tests/Specs/1.3/Utilities/Color.js +78 -0
  777. data/Packages/mootools-more/Tests/Specs/1.3/Utilities/Group.js +25 -0
  778. data/Packages/mootools-more/Tests/Specs/1.3/Utilities/Hash.Cookie.js +50 -0
  779. data/Packages/mootools-more/Tests/Specs/1.3/Utilities/Table.js +56 -0
  780. data/Packages/mootools-more/Tests/Specs/Configuration.js +245 -0
  781. data/Packages/mootools-more/Tests/Specs/assets/Assets.css.test.css +24 -0
  782. data/Packages/mootools-more/Tests/Specs/assets/Assets.js.test.js +3 -0
  783. data/Packages/mootools-more/Tests/Specs/assets/cow.png +0 -0
  784. data/Packages/mootools-more/Tests/Specs/assets/jsonp.js +8 -0
  785. data/Packages/mootools-more/Tests/Specs/assets/mootools.png +0 -0
  786. data/Packages/mootools-more/Tests/Specs/index.html +26 -0
  787. data/Packages/mootools-more/Tests/Specs/package.yml +47 -0
  788. data/Packages/mootools-more/build +40 -0
  789. data/Packages/mootools-more/package.yml +145 -0
  790. data/Packages/mootools-resource/README.md +60 -0
  791. data/Packages/mootools-resource/Source/Resource.Collection.js +40 -0
  792. data/Packages/mootools-resource/Source/Resource.Model.Actions.js +98 -0
  793. data/Packages/mootools-resource/Source/Resource.Model.js +175 -0
  794. data/Packages/mootools-resource/Source/Resource.Parser.HTML.js +28 -0
  795. data/Packages/mootools-resource/Source/Resource.Parser.JSON.js +35 -0
  796. data/Packages/mootools-resource/Source/Resource.Parser.XML.js +31 -0
  797. data/Packages/mootools-resource/Source/Resource.Parser.js +50 -0
  798. data/Packages/mootools-resource/Source/Resource.js +282 -0
  799. data/Packages/mootools-resource/package.yml +18 -0
  800. data/Packages/mootools-speedups/README.md +10 -0
  801. data/Packages/mootools-speedups/Source/Core/Class.Extras.Speedups.js +14 -0
  802. data/Packages/mootools-speedups/Source/Core/Class.Speedups.js +129 -0
  803. data/Packages/mootools-speedups/Source/Core/Core.Speedups.js +89 -0
  804. data/Packages/mootools-speedups/Source/Types/Object.js +36 -0
  805. data/Packages/mootools-speedups/package.yml +19 -0
  806. data/Packages/mootools-string-inflections/README.md +292 -0
  807. data/Packages/mootools-string-inflections/Source/String.Inflections.js +230 -0
  808. data/Packages/mootools-string-inflections/TODO.md +2 -0
  809. data/Packages/mootools-string-inflections/Tests/index.html +12 -0
  810. data/Packages/mootools-string-inflections/Tests/test.js +95 -0
  811. data/Packages/mootools-string-inflections/package.yml +7 -0
  812. data/Packages/qfocuser/README +63 -0
  813. data/Packages/qfocuser/Source/QFocuser.js +278 -0
  814. data/Packages/qfocuser/package.yml +8 -0
  815. data/Packages/slick/Makefile +19 -0
  816. data/Packages/slick/README.md +127 -0
  817. data/Packages/slick/SlickSpec/Configuration.js +56 -0
  818. data/Packages/slick/SlickSpec/assets/JSSpecHelpers.js +187 -0
  819. data/Packages/slick/SlickSpec/assets/getgetter.js +65 -0
  820. data/Packages/slick/SlickSpec/assets/ie.css +37 -0
  821. data/Packages/slick/SlickSpec/assets/moobugger/bookmarklet.html +46 -0
  822. data/Packages/slick/SlickSpec/assets/moobugger/debugger-iframe.js +386 -0
  823. data/Packages/slick/SlickSpec/assets/moobugger/debugger.css +190 -0
  824. data/Packages/slick/SlickSpec/assets/moobugger/debugger.html +25 -0
  825. data/Packages/slick/SlickSpec/assets/moobugger/debugger.js +284 -0
  826. data/Packages/slick/SlickSpec/assets/moobugger/images/close.png +0 -0
  827. data/Packages/slick/SlickSpec/assets/moobugger/images/error.png +0 -0
  828. data/Packages/slick/SlickSpec/assets/moobugger/images/group-close.png +0 -0
  829. data/Packages/slick/SlickSpec/assets/moobugger/images/group-open.png +0 -0
  830. data/Packages/slick/SlickSpec/assets/moobugger/images/icon.png +0 -0
  831. data/Packages/slick/SlickSpec/assets/moobugger/images/info.png +0 -0
  832. data/Packages/slick/SlickSpec/assets/moobugger/images/lick.png +0 -0
  833. data/Packages/slick/SlickSpec/assets/moobugger/images/max.png +0 -0
  834. data/Packages/slick/SlickSpec/assets/moobugger/images/min.png +0 -0
  835. data/Packages/slick/SlickSpec/assets/moobugger/images/mootools.png +0 -0
  836. data/Packages/slick/SlickSpec/assets/moobugger/images/time.png +0 -0
  837. data/Packages/slick/SlickSpec/assets/moobugger/images/warning.png +0 -0
  838. data/Packages/slick/SlickSpec/assets/moobugger/mootools.js +57 -0
  839. data/Packages/slick/SlickSpec/assets/moobugger/test.html +88 -0
  840. data/Packages/slick/SlickSpec/assets/screen.css +259 -0
  841. data/Packages/slick/SlickSpec/assets/simple_request.js +67 -0
  842. data/Packages/slick/SlickSpec/assets/slickspec.css +366 -0
  843. data/Packages/slick/SlickSpec/bootstrap/moo12.slickspec.js +55 -0
  844. data/Packages/slick/SlickSpec/bootstrap/nwmatcher.slickspec.js +27 -0
  845. data/Packages/slick/SlickSpec/bootstrap/sizzle.slickspec.js +65 -0
  846. data/Packages/slick/SlickSpec/bootstrap/slick.slickspec.js +66 -0
  847. data/Packages/slick/SlickSpec/bootstrap/yui.slickspec.js +36 -0
  848. data/Packages/slick/SlickSpec/index.html +26 -0
  849. data/Packages/slick/SlickSpec/mocks/MooTools_Logo.svg +24 -0
  850. data/Packages/slick/SlickSpec/mocks/html5-shim.html +70 -0
  851. data/Packages/slick/SlickSpec/mocks/query_test-dojo.html +79 -0
  852. data/Packages/slick/SlickSpec/mocks/query_test-google_closure.html +72 -0
  853. data/Packages/slick/SlickSpec/mocks/query_test-jquery.html +213 -0
  854. data/Packages/slick/SlickSpec/mocks/query_test-prototype.html +95 -0
  855. data/Packages/slick/SlickSpec/mocks/query_test-slick.html +20 -0
  856. data/Packages/slick/SlickSpec/mocks/query_test-yui.html +88 -0
  857. data/Packages/slick/SlickSpec/mocks/template-almost.html +2932 -0
  858. data/Packages/slick/SlickSpec/mocks/template-chromeframe.html +2932 -0
  859. data/Packages/slick/SlickSpec/mocks/template-ie7.html +2932 -0
  860. data/Packages/slick/SlickSpec/mocks/template-quirks.html +2932 -0
  861. data/Packages/slick/SlickSpec/mocks/template-standard.html +2932 -0
  862. data/Packages/slick/SlickSpec/mocks/template-transitional.html +2932 -0
  863. data/Packages/slick/SlickSpec/mocks/template.xhtml +2476 -0
  864. data/Packages/slick/SlickSpec/mocks/template.xml +2475 -0
  865. data/Packages/slick/SlickSpec/mocks/xml.xml +21 -0
  866. data/Packages/slick/SlickSpec/select.html +107 -0
  867. data/Packages/slick/SlickSpec/setup.js +93 -0
  868. data/Packages/slick/SlickSpec/slickspec.html +261 -0
  869. data/Packages/slick/SlickSpec/specrunner_browser.html +69 -0
  870. data/Packages/slick/SlickSpec/specs/api.js +167 -0
  871. data/Packages/slick/SlickSpec/specs/browser_bugs.js +269 -0
  872. data/Packages/slick/SlickSpec/specs/dojo.js +260 -0
  873. data/Packages/slick/SlickSpec/specs/engine_bugs.js +388 -0
  874. data/Packages/slick/SlickSpec/specs/google_closure.js +176 -0
  875. data/Packages/slick/SlickSpec/specs/html.js +58 -0
  876. data/Packages/slick/SlickSpec/specs/html5.js +40 -0
  877. data/Packages/slick/SlickSpec/specs/isxml.js +24 -0
  878. data/Packages/slick/SlickSpec/specs/jquery.js +465 -0
  879. data/Packages/slick/SlickSpec/specs/match.js +139 -0
  880. data/Packages/slick/SlickSpec/specs/mock_template.js +360 -0
  881. data/Packages/slick/SlickSpec/specs/parser.js +409 -0
  882. data/Packages/slick/SlickSpec/specs/prototype.js +428 -0
  883. data/Packages/slick/SlickSpec/specs/select_exhaustive.js +84 -0
  884. data/Packages/slick/SlickSpec/specs/select_nth-child.js +64 -0
  885. data/Packages/slick/SlickSpec/specs/syntax.js +45 -0
  886. data/Packages/slick/SlickSpec/specs/unit.js +87 -0
  887. data/Packages/slick/SlickSpec/specs/xml.js +47 -0
  888. data/Packages/slick/SlickSpec/specs/yui.js +510 -0
  889. data/Packages/slick/SlickSpec/user-specs/pseudos.html +45 -0
  890. data/Packages/slick/Source/Slick.Finder.js +1012 -0
  891. data/Packages/slick/Source/Slick.Parser.js +231 -0
  892. data/Packages/slick/Source/slick.js +10 -0
  893. data/Packages/slick/package.json +12 -0
  894. data/Packages/slick/package.yml +19 -0
  895. data/Packages/slick/speed/frameworks/dojo-acme.js +1625 -0
  896. data/Packages/slick/speed/frameworks/dojo.js +16 -0
  897. data/Packages/slick/speed/frameworks/domass.js +1365 -0
  898. data/Packages/slick/speed/frameworks/jquery.js +4376 -0
  899. data/Packages/slick/speed/frameworks/mootools-core-1.3.js +5367 -0
  900. data/Packages/slick/speed/frameworks/mootools-slick.js +626 -0
  901. data/Packages/slick/speed/frameworks/mootools.js +4329 -0
  902. data/Packages/slick/speed/frameworks/native.js +0 -0
  903. data/Packages/slick/speed/frameworks/nwmatcher.js +1264 -0
  904. data/Packages/slick/speed/frameworks/prototype.js +4320 -0
  905. data/Packages/slick/speed/frameworks/sizzle.js +1102 -0
  906. data/Packages/slick/speed/frameworks/slick.js +1099 -0
  907. data/Packages/slick/speed/frameworks/sly.js +857 -0
  908. data/Packages/slick/speed/frameworks/yass.css3.js +490 -0
  909. data/Packages/slick/speed/jslitmus/JSLitmus.js +714 -0
  910. data/Packages/slick/speed/jslitmus/JSLitmusHelpers.js +3 -0
  911. data/Packages/slick/speed/jslitmus/bench_catch.html +49 -0
  912. data/Packages/slick/speed/jslitmus/bench_match.html +214 -0
  913. data/Packages/slick/speed/jslitmus/bench_match.js +98 -0
  914. data/Packages/slick/speed/jslitmus/bench_parse.html +161 -0
  915. data/Packages/slick/speed/jslitmus/bench_parse.js +68 -0
  916. data/Packages/slick/speed/jslitmus/bench_select.html +198 -0
  917. data/Packages/slick/speed/jslitmus/bench_select.js +106 -0
  918. data/Packages/slick/speed/jslitmus/bench_select2.js +106 -0
  919. data/Packages/slick/speed/jslitmus/bench_uidOf.html +121 -0
  920. data/Packages/slick/speed/jslitmus/closedNodes.html +92 -0
  921. data/Packages/slick/speed/jslitmus/demo.html +97 -0
  922. data/Packages/slick/speed/jslitmus/get_attribute.html +75 -0
  923. data/Packages/slick/speed/jslitmus/label_break-vs-fn_return.html +65 -0
  924. data/Packages/slick/speed/jslitmus/label_string-vs-var.html +94 -0
  925. data/Packages/slick/speed/jslitmus/method_vs_propfn.html +109 -0
  926. data/Packages/slick/speed/jslitmus/nodeListtoArray.html +89 -0
  927. data/Packages/slick/speed/jslitmus/parse_vs_clone.html +41 -0
  928. data/Packages/slick/speed/jslitmus/results.html +68 -0
  929. data/Packages/slick/speed/jslitmus/select.html +25 -0
  930. data/Packages/slick/speed/jslitmus/selectHTML.html +206 -0
  931. data/Packages/slick/speed/jslitmus/selectXML.html +140 -0
  932. data/Packages/slick/speed/jslitmus/select_class-doctypes.html +150 -0
  933. data/Packages/slick/speed/jslitmus/select_class.html +92 -0
  934. data/Packages/slick/speed/jslitmus/select_id.html +133 -0
  935. data/Packages/slick/speed/slickspeed/config.ini +54 -0
  936. data/Packages/slick/speed/slickspeed/footer.html +3 -0
  937. data/Packages/slick/speed/slickspeed/header.php +28 -0
  938. data/Packages/slick/speed/slickspeed/index.php +36 -0
  939. data/Packages/slick/speed/slickspeed/instructions.txt +4 -0
  940. data/Packages/slick/speed/slickspeed/logo.png +0 -0
  941. data/Packages/slick/speed/slickspeed/selectors.list.crazy.css +319 -0
  942. data/Packages/slick/speed/slickspeed/selectors.list.css +40 -0
  943. data/Packages/slick/speed/slickspeed/selectors.list.extended.css +81 -0
  944. data/Packages/slick/speed/slickspeed/selectors.list.mine.css +54 -0
  945. data/Packages/slick/speed/slickspeed/selectors.list.org.css +37 -0
  946. data/Packages/slick/speed/slickspeed/selectors.list.simple.css +105 -0
  947. data/Packages/slick/speed/slickspeed/selectors.list.sly.css +54 -0
  948. data/Packages/slick/speed/slickspeed/selectors.list.yahoo.css +33 -0
  949. data/Packages/slick/speed/slickspeed/style.css +197 -0
  950. data/Packages/slick/speed/slickspeed/system/index.php +172 -0
  951. data/Packages/slick/speed/slickspeed/system/slickspeed.js +162 -0
  952. data/Packages/slick/speed/slickspeed/system/template.php +154 -0
  953. data/Packages/slick/speed/slickspeed/system_slackerspeed/index.php +295 -0
  954. data/Packages/slick/speed/slickspeed/system_slackerspeed/slickspeed.js +147 -0
  955. data/Packages/slick/speed/slickspeed/system_slackerspeed/template.php +54 -0
  956. data/Packages/slick/speed/slickspeed/template.html +2921 -0
  957. data/Packages/slick/speed/slickspeed/template.yahoo.html +1 -0
  958. data/Packages/slick/speed/speedtests/deepmatch/index.html +294 -0
  959. data/Packages/slick/speed/speedtests/index.html +14 -0
  960. data/Packages/slick/speed/speedtests/setdocument/index.html +44 -0
  961. data/Packages/slick/speed/speedtests/setdocument/slow-document.js +69 -0
  962. data/Packages/slick/speed/subtleslickspeed/README.mdown +6 -0
  963. data/Packages/slick/speed/subtleslickspeed/lib/ie.css +26 -0
  964. data/Packages/slick/speed/subtleslickspeed/lib/jslib.js +389 -0
  965. data/Packages/slick/speed/subtleslickspeed/lib/own_tests/report_test.html +64 -0
  966. data/Packages/slick/speed/subtleslickspeed/lib/print.css +30 -0
  967. data/Packages/slick/speed/subtleslickspeed/lib/screen.css +251 -0
  968. data/Packages/slick/speed/subtleslickspeed/lib/subtlesandbox.js +174 -0
  969. data/Packages/slick/speed/subtleslickspeed/lib/subtlesandbox_strict.html +18 -0
  970. data/Packages/slick/speed/subtleslickspeed/lib/subtleslickspeed.js +290 -0
  971. data/Packages/slick/speed/subtleslickspeed/lib/subtleslickspeed.reports.js +87 -0
  972. data/Packages/slick/speed/subtleslickspeed/lib/subtleslickspeed.reports.table.js +353 -0
  973. data/Packages/slick/speed/subtleslickspeed/lib/table_report.css +241 -0
  974. data/Packages/slick/speed/subtleslickspeed/selectors.html +156 -0
  975. data/Packages/slick/speed/subtleslickspeed/string_replace.html +2998 -0
  976. data/Packages/slick/speed/subtleslickspeed/tests/selectors/template.html +14 -0
  977. data/Packages/slick/speed/subtleslickspeed/tests/selectors/template.js +2924 -0
  978. data/Packages/slick/speed/subtleslickspeed/tests/selectors/tests.js +177 -0
  979. data/lib/lsd/helper.rb +12 -0
  980. data/lib/lsd/packages.rb +25 -0
  981. data/lib/lsd/railtie.rb +33 -0
  982. data/lib/lsd/source.rb +37 -0
  983. data/lib/lsd/widget_generator.rb +24 -0
  984. data/lib/lsd.rake +17 -0
  985. data/lib/lsd.rb +20 -0
  986. data/lib/templates/Application.js +37 -0
  987. data/lib/templates/Widget.js +25 -0
  988. data/lib/templates/app_name.js +18 -0
  989. data/lib/templates/new_widget.js +25 -0
  990. data/lib/templates/package.yml +18 -0
  991. metadata +1053 -0
@@ -0,0 +1,3183 @@
1
+ /*
2
+ ---
3
+
4
+ name: Core
5
+
6
+ description: The heart of MooTools.
7
+
8
+ license: MIT-style license.
9
+
10
+ copyright: Copyright (c) 2006-2010 [Valerio Proietti](http://mad4milk.net/).
11
+
12
+ authors: The MooTools production team (http://mootools.net/developers/)
13
+
14
+ inspiration:
15
+ - Class implementation inspired by [Base.js](http://dean.edwards.name/weblog/2006/03/base/) Copyright (c) 2006 Dean Edwards, [GNU Lesser General Public License](http://opensource.org/licenses/lgpl-license.php)
16
+ - Some functionality inspired by [Prototype.js](http://prototypejs.org) Copyright (c) 2005-2007 Sam Stephenson, [MIT License](http://opensource.org/licenses/mit-license.php)
17
+
18
+ provides: [Core, MooTools, Type, typeOf, instanceOf]
19
+
20
+ ...
21
+ */
22
+
23
+ (function(){
24
+
25
+ this.MooTools = {
26
+ version: '1.3dev',
27
+ build: '48f9611d30fea60ed2d913402e7033eba84c500d'
28
+ };
29
+
30
+ // typeOf, instanceOf
31
+
32
+ var typeOf = this.typeOf = function(item){
33
+ if (item == null) return 'null';
34
+ if (item.$family) return item.$family();
35
+
36
+ if (item.nodeName){
37
+ if (item.nodeType == 1) return 'element';
38
+ if (item.nodeType == 3) return (/\S/).test(item.nodeValue) ? 'textnode' : 'whitespace';
39
+ } else if (typeof item.length == 'number'){
40
+ if (item.callee) return 'arguments';
41
+ if ('item' in item) return 'collection';
42
+ }
43
+
44
+ return typeof item;
45
+ };
46
+
47
+ var instanceOf = this.instanceOf = function(item, object){
48
+ if (item == null) return false;
49
+ var constructor = item.$constructor || item.constructor;
50
+ while (constructor){
51
+ if (constructor === object) return true;
52
+ constructor = constructor.parent;
53
+ }
54
+ return item instanceof object;
55
+ };
56
+
57
+ // Function overloading
58
+
59
+ var Function = this.Function;
60
+
61
+ var enumerables = true;
62
+ for (var i in {toString: 1}) enumerables = null;
63
+ if (enumerables) enumerables = ['hasOwnProperty', 'valueOf', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'constructor'];
64
+
65
+ Function.prototype.overloadSetter = function(usePlural){
66
+ var self = this;
67
+ return function(a, b){
68
+ if (a == null) return this;
69
+ if (usePlural || typeof a != 'string'){
70
+ for (var k in a) self.call(this, k, a[k]);
71
+ if (enumerables) for (var i = enumerables.length; i--;){
72
+ k = enumerables[i];
73
+ if (a.hasOwnProperty(k)) self.call(this, k, a[k]);
74
+ }
75
+ } else {
76
+ self.call(this, a, b);
77
+ }
78
+ return this;
79
+ };
80
+ };
81
+
82
+ Function.prototype.overloadGetter = function(usePlural){
83
+ var self = this;
84
+ return function(a){
85
+ var args, result;
86
+ if (usePlural || typeof a != 'string') args = a;
87
+ else if (arguments.length > 1) args = arguments;
88
+ if (args){
89
+ result = {};
90
+ for (var i = 0; i < args.length; i++) result[args[i]] = self.call(this, args[i]);
91
+ } else {
92
+ result = self.call(this, a);
93
+ }
94
+ return result;
95
+ };
96
+ };
97
+
98
+ Function.prototype.extend = function(key, value){
99
+ this[key] = value;
100
+ }.overloadSetter();
101
+
102
+ Function.prototype.implement = function(key, value){
103
+ this.prototype[key] = value;
104
+ }.overloadSetter();
105
+
106
+ // From
107
+
108
+ var slice = Array.prototype.slice;
109
+
110
+ Function.from = function(item){
111
+ return (typeOf(item) == 'function') ? item : function(){
112
+ return item;
113
+ };
114
+ };
115
+
116
+ Array.from = function(item){
117
+ if (item == null) return [];
118
+ return (Type.isEnumerable(item) && typeof item != 'string') ? (typeOf(item) == 'array') ? item : slice.call(item) : [item];
119
+ };
120
+
121
+ Number.from = function(item){
122
+ var number = parseFloat(item);
123
+ return isFinite(number) ? number : null;
124
+ };
125
+
126
+ String.from = function(item){
127
+ return item + '';
128
+ };
129
+
130
+ // hide, protect
131
+
132
+ Function.implement({
133
+
134
+ hide: function(){
135
+ this.$hidden = true;
136
+ return this;
137
+ },
138
+
139
+ protect: function(){
140
+ this.$protected = true;
141
+ return this;
142
+ }
143
+
144
+ });
145
+
146
+ // Type
147
+
148
+ var Type = this.Type = function(name, object){
149
+ if (name){
150
+ var lower = name.toLowerCase();
151
+ var typeCheck = function(item){
152
+ return (typeOf(item) == lower);
153
+ };
154
+
155
+ Type['is' + name] = typeCheck;
156
+ if (object != null){
157
+ object.prototype.$family = (function(){
158
+ return lower;
159
+ }).hide();
160
+
161
+ }
162
+ }
163
+
164
+ if (object == null) return null;
165
+
166
+ object.extend(this);
167
+ object.$constructor = Type;
168
+ object.prototype.$constructor = object;
169
+
170
+ return object;
171
+ };
172
+
173
+ var toString = Object.prototype.toString;
174
+
175
+ Type.isEnumerable = function(item){
176
+ return (item != null && typeof item.length == 'number' && toString.call(item) != '[object Function]' );
177
+ };
178
+
179
+ var hooks = {};
180
+
181
+ var hooksOf = function(object){
182
+ var type = typeOf(object.prototype);
183
+ return hooks[type] || (hooks[type] = []);
184
+ };
185
+
186
+ var implement = function(name, method){
187
+ if (method && method.$hidden) return this;
188
+
189
+ var hooks = hooksOf(this);
190
+
191
+ for (var i = 0; i < hooks.length; i++){
192
+ var hook = hooks[i];
193
+ if (typeOf(hook) == 'type') implement.call(hook, name, method);
194
+ else hook.call(this, name, method);
195
+ }
196
+
197
+ var previous = this.prototype[name];
198
+ if (previous == null || !previous.$protected) this.prototype[name] = method;
199
+
200
+ if (this[name] == null && typeOf(method) == 'function') extend.call(this, name, function(item){
201
+ return method.apply(item, slice.call(arguments, 1));
202
+ });
203
+
204
+ return this;
205
+ };
206
+
207
+ var extend = function(name, method){
208
+ if (method && method.$hidden) return this;
209
+ var previous = this[name];
210
+ if (previous == null || !previous.$protected) this[name] = method;
211
+ return this;
212
+ };
213
+
214
+ Type.implement({
215
+
216
+ implement: implement.overloadSetter(),
217
+
218
+ extend: extend.overloadSetter(),
219
+
220
+ alias: function(name, existing){
221
+ implement.call(this, name, this.prototype[existing]);
222
+ }.overloadSetter(),
223
+
224
+ mirror: function(hook){
225
+ hooksOf(this).push(hook);
226
+ return this;
227
+ }
228
+
229
+ });
230
+
231
+ new Type('Type', Type);
232
+
233
+ // Default Types
234
+
235
+ var force = function(name, object, methods){
236
+ var isType = (object != Object),
237
+ prototype = object.prototype;
238
+
239
+ if (isType) object = new Type(name, object);
240
+
241
+ for (var i = 0, l = methods.length; i < l; i++){
242
+ var key = methods[i],
243
+ generic = object[key],
244
+ proto = prototype[key];
245
+
246
+ if (generic) generic.protect();
247
+
248
+ if (isType && proto){
249
+ delete prototype[key];
250
+ prototype[key] = proto.protect();
251
+ }
252
+ }
253
+
254
+ if (isType) object.implement(prototype);
255
+
256
+ return force;
257
+ };
258
+
259
+ force('String', String, [
260
+ 'charAt', 'charCodeAt', 'concat', 'indexOf', 'lastIndexOf', 'match', 'quote', 'replace', 'search',
261
+ 'slice', 'split', 'substr', 'substring', 'toLowerCase', 'toUpperCase'
262
+ ])('Array', Array, [
263
+ 'pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift', 'concat', 'join', 'slice',
264
+ 'indexOf', 'lastIndexOf', 'filter', 'forEach', 'every', 'map', 'some', 'reduce', 'reduceRight'
265
+ ])('Number', Number, [
266
+ 'toExponential', 'toFixed', 'toLocaleString', 'toPrecision'
267
+ ])('Function', Function, [
268
+ 'apply', 'call', 'bind'
269
+ ])('RegExp', RegExp, [
270
+ 'exec', 'test'
271
+ ])('Object', Object, [
272
+ 'create', 'defineProperty', 'defineProperties', 'keys',
273
+ 'getPrototypeOf', 'getOwnPropertyDescriptor', 'getOwnPropertyNames',
274
+ 'preventExtensions', 'isExtensible', 'seal', 'isSealed', 'freeze', 'isFrozen'
275
+ ])('Date', Date, ['now']);
276
+
277
+ Object.extend = extend.overloadSetter();
278
+
279
+ Date.extend('now', function(){
280
+ return +(new Date);
281
+ });
282
+
283
+ new Type('Boolean', Boolean);
284
+
285
+ // fixes NaN returning as Number
286
+
287
+ Number.prototype.$family = function(){
288
+ return isFinite(this) ? 'number' : 'null';
289
+ }.hide();
290
+
291
+ // Number.random
292
+
293
+ Number.extend('random', function(min, max){
294
+ return Math.floor(Math.random() * (max - min + 1) + min);
295
+ });
296
+
297
+ // forEach, each
298
+
299
+ Object.extend('forEach', function(object, fn, bind){
300
+ for (var key in object){
301
+ if (object.hasOwnProperty(key)) fn.call(bind, object[key], key, object);
302
+ }
303
+ });
304
+
305
+ Object.each = Object.forEach;
306
+
307
+ Array.implement({
308
+
309
+ forEach: function(fn, bind){
310
+ for (var i = 0, l = this.length; i < l; i++){
311
+ if (i in this) fn.call(bind, this[i], i, this);
312
+ }
313
+ },
314
+
315
+ each: function(fn, bind){
316
+ Array.forEach(this, fn, bind);
317
+ return this;
318
+ }
319
+
320
+ });
321
+
322
+ // Array & Object cloning, Object merging and appending
323
+
324
+ var cloneOf = function(item){
325
+ switch (typeOf(item)){
326
+ case 'array': return item.clone();
327
+ case 'object': return Object.clone(item);
328
+ default: return item;
329
+ }
330
+ };
331
+
332
+ Array.implement('clone', function(){
333
+ var i = this.length, clone = new Array(i);
334
+ while (i--) clone[i] = cloneOf(this[i]);
335
+ return clone;
336
+ });
337
+
338
+ var mergeOne = function(source, key, current){
339
+ switch (typeOf(current)){
340
+ case 'object':
341
+ if (typeOf(source[key]) == 'object') Object.merge(source[key], current);
342
+ else source[key] = Object.clone(current);
343
+ break;
344
+ case 'array': source[key] = current.clone(); break;
345
+ default: source[key] = current;
346
+ }
347
+ return source;
348
+ };
349
+
350
+ Object.extend({
351
+
352
+ merge: function(source, k, v){
353
+ if (typeOf(k) == 'string') return mergeOne(source, k, v);
354
+ for (var i = 1, l = arguments.length; i < l; i++){
355
+ var object = arguments[i];
356
+ for (var key in object) mergeOne(source, key, object[key]);
357
+ }
358
+ return source;
359
+ },
360
+
361
+ clone: function(object){
362
+ var clone = {};
363
+ for (var key in object) clone[key] = cloneOf(object[key]);
364
+ return clone;
365
+ },
366
+
367
+ append: function(original){
368
+ for (var i = 1, l = arguments.length; i < l; i++){
369
+ var extended = arguments[i] || {};
370
+ for (var key in extended) original[key] = extended[key];
371
+ }
372
+ return original;
373
+ }
374
+
375
+ });
376
+
377
+ // Object-less types
378
+
379
+ ['Object', 'WhiteSpace', 'TextNode', 'Collection', 'Arguments'].each(function(name){
380
+ new Type(name);
381
+ });
382
+
383
+
384
+
385
+ })();
386
+
387
+
388
+ /*
389
+ ---
390
+
391
+ name: Array
392
+
393
+ description: Contains Array Prototypes like each, contains, and erase.
394
+
395
+ license: MIT-style license.
396
+
397
+ requires: Type
398
+
399
+ provides: Array
400
+
401
+ ...
402
+ */
403
+
404
+ Array.implement({
405
+
406
+ invoke: function(methodName){
407
+ var args = Array.slice(arguments, 1);
408
+ return this.map(function(item){
409
+ return item[methodName].apply(item, args);
410
+ });
411
+ },
412
+
413
+ every: function(fn, bind){
414
+ for (var i = 0, l = this.length; i < l; i++){
415
+ if ((i in this) && !fn.call(bind, this[i], i, this)) return false;
416
+ }
417
+ return true;
418
+ },
419
+
420
+ filter: function(fn, bind){
421
+ var results = [];
422
+ for (var i = 0, l = this.length; i < l; i++){
423
+ if ((i in this) && fn.call(bind, this[i], i, this)) results.push(this[i]);
424
+ }
425
+ return results;
426
+ },
427
+
428
+ clean: function(){
429
+ return this.filter(function(item){
430
+ return item != null;
431
+ });
432
+ },
433
+
434
+ indexOf: function(item, from){
435
+ var len = this.length;
436
+ for (var i = (from < 0) ? Math.max(0, len + from) : from || 0; i < len; i++){
437
+ if (this[i] === item) return i;
438
+ }
439
+ return -1;
440
+ },
441
+
442
+ map: function(fn, bind){
443
+ var results = [];
444
+ for (var i = 0, l = this.length; i < l; i++){
445
+ if (i in this) results[i] = fn.call(bind, this[i], i, this);
446
+ }
447
+ return results;
448
+ },
449
+
450
+ some: function(fn, bind){
451
+ for (var i = 0, l = this.length; i < l; i++){
452
+ if ((i in this) && fn.call(bind, this[i], i, this)) return true;
453
+ }
454
+ return false;
455
+ },
456
+
457
+ associate: function(keys){
458
+ var obj = {}, length = Math.min(this.length, keys.length);
459
+ for (var i = 0; i < length; i++) obj[keys[i]] = this[i];
460
+ return obj;
461
+ },
462
+
463
+ link: function(object){
464
+ var result = {};
465
+ for (var i = 0, l = this.length; i < l; i++){
466
+ for (var key in object){
467
+ if (object[key](this[i])){
468
+ result[key] = this[i];
469
+ delete object[key];
470
+ break;
471
+ }
472
+ }
473
+ }
474
+ return result;
475
+ },
476
+
477
+ contains: function(item, from){
478
+ return this.indexOf(item, from) != -1;
479
+ },
480
+
481
+ append: function(array){
482
+ this.push.apply(this, array);
483
+ return this;
484
+ },
485
+
486
+ getLast: function(){
487
+ return (this.length) ? this[this.length - 1] : null;
488
+ },
489
+
490
+ getRandom: function(){
491
+ return (this.length) ? this[Number.random(0, this.length - 1)] : null;
492
+ },
493
+
494
+ include: function(item){
495
+ if (!this.contains(item)) this.push(item);
496
+ return this;
497
+ },
498
+
499
+ combine: function(array){
500
+ for (var i = 0, l = array.length; i < l; i++) this.include(array[i]);
501
+ return this;
502
+ },
503
+
504
+ erase: function(item){
505
+ for (var i = this.length; i--;){
506
+ if (this[i] === item) this.splice(i, 1);
507
+ }
508
+ return this;
509
+ },
510
+
511
+ empty: function(){
512
+ this.length = 0;
513
+ return this;
514
+ },
515
+
516
+ flatten: function(){
517
+ var array = [];
518
+ for (var i = 0, l = this.length; i < l; i++){
519
+ var type = typeOf(this[i]);
520
+ if (type == 'null') continue;
521
+ array = array.concat((type == 'array' || type == 'collection' || type == 'arguments' || instanceOf(this[i], Array)) ? Array.flatten(this[i]) : this[i]);
522
+ }
523
+ return array;
524
+ },
525
+
526
+ pick: function(){
527
+ for (var i = 0, l = this.length; i < l; i++){
528
+ if (this[i] != null) return this[i];
529
+ }
530
+ return null;
531
+ },
532
+
533
+ hexToRgb: function(array){
534
+ if (this.length != 3) return null;
535
+ var rgb = this.map(function(value){
536
+ if (value.length == 1) value += value;
537
+ return value.toInt(16);
538
+ });
539
+ return (array) ? rgb : 'rgb(' + rgb + ')';
540
+ },
541
+
542
+ rgbToHex: function(array){
543
+ if (this.length < 3) return null;
544
+ if (this.length == 4 && this[3] == 0 && !array) return 'transparent';
545
+ var hex = [];
546
+ for (var i = 0; i < 3; i++){
547
+ var bit = (this[i] - 0).toString(16);
548
+ hex.push((bit.length == 1) ? '0' + bit : bit);
549
+ }
550
+ return (array) ? hex : '#' + hex.join('');
551
+ }
552
+
553
+ });
554
+
555
+
556
+
557
+
558
+ /*
559
+ ---
560
+
561
+ name: Function
562
+
563
+ description: Contains Function Prototypes like create, bind, pass, and delay.
564
+
565
+ license: MIT-style license.
566
+
567
+ requires: Type
568
+
569
+ provides: Function
570
+
571
+ ...
572
+ */
573
+
574
+ Function.extend({
575
+
576
+ attempt: function(){
577
+ for (var i = 0, l = arguments.length; i < l; i++){
578
+ try {
579
+ return arguments[i]();
580
+ } catch (e){}
581
+ }
582
+ return null;
583
+ }
584
+
585
+ });
586
+
587
+ Function.implement({
588
+
589
+ attempt: function(args, bind){
590
+ try {
591
+ return this.apply(bind, Array.from(args));
592
+ } catch (e){}
593
+
594
+ return null;
595
+ },
596
+
597
+ bind: function(bind){
598
+ var self = this,
599
+ args = (arguments.length > 1) ? Array.slice(arguments, 1) : null;
600
+
601
+ return function(){
602
+ if (!args && !arguments.length) return self.call(bind);
603
+ if (args && arguments.length) return self.apply(bind, args.concat(Array.from(arguments)));
604
+ return self.apply(bind, args || arguments);
605
+ };
606
+ },
607
+
608
+ delay: function(delay, bind, args){
609
+ return setTimeout(this.pass(args || [], bind), delay);
610
+ },
611
+
612
+ pass: function(args, bind){
613
+ var self = this;
614
+ if (args != null) args = Array.from(args);
615
+ return function(){
616
+ return self.apply(bind, args || arguments);
617
+ };
618
+ },
619
+
620
+ periodical: function(periodical, bind, args){
621
+ return setInterval(this.pass(args || [], bind), periodical);
622
+ }
623
+
624
+ });
625
+
626
+
627
+
628
+
629
+ /*
630
+ ---
631
+
632
+ name: Number
633
+
634
+ description: Contains Number Prototypes like limit, round, times, and ceil.
635
+
636
+ license: MIT-style license.
637
+
638
+ requires: Type
639
+
640
+ provides: Number
641
+
642
+ ...
643
+ */
644
+
645
+ Number.implement({
646
+
647
+ limit: function(min, max){
648
+ return Math.min(max, Math.max(min, this));
649
+ },
650
+
651
+ round: function(precision){
652
+ precision = Math.pow(10, precision || 0).toFixed(precision < 0 ? -precision : 0);
653
+ return Math.round(this * precision) / precision;
654
+ },
655
+
656
+ times: function(fn, bind){
657
+ for (var i = 0; i < this; i++) fn.call(bind, i, this);
658
+ },
659
+
660
+ toFloat: function(){
661
+ return parseFloat(this);
662
+ },
663
+
664
+ toInt: function(base){
665
+ return parseInt(this, base || 10);
666
+ }
667
+
668
+ });
669
+
670
+ Number.alias('each', 'times');
671
+
672
+ (function(math){
673
+ var methods = {};
674
+ math.each(function(name){
675
+ if (!Number[name]) methods[name] = function(){
676
+ return Math[name].apply(null, [this].concat(Array.from(arguments)));
677
+ };
678
+ });
679
+ Number.implement(methods);
680
+ })(['abs', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'exp', 'floor', 'log', 'max', 'min', 'pow', 'sin', 'sqrt', 'tan']);
681
+
682
+
683
+ /*
684
+ ---
685
+
686
+ name: String
687
+
688
+ description: Contains String Prototypes like camelCase, capitalize, test, and toInt.
689
+
690
+ license: MIT-style license.
691
+
692
+ requires: Type
693
+
694
+ provides: String
695
+
696
+ ...
697
+ */
698
+
699
+ String.implement({
700
+
701
+ test: function(regex, params){
702
+ return ((typeOf(regex) == 'regexp') ? regex : new RegExp('' + regex, params)).test(this);
703
+ },
704
+
705
+ contains: function(string, separator){
706
+ return (separator) ? (separator + this + separator).indexOf(separator + string + separator) > -1 : this.indexOf(string) > -1;
707
+ },
708
+
709
+ trim: function(){
710
+ return this.replace(/^\s+|\s+$/g, '');
711
+ },
712
+
713
+ clean: function(){
714
+ return this.replace(/\s+/g, ' ').trim();
715
+ },
716
+
717
+ camelCase: function(){
718
+ return this.replace(/-\D/g, function(match){
719
+ return match.charAt(1).toUpperCase();
720
+ });
721
+ },
722
+
723
+ hyphenate: function(){
724
+ return this.replace(/[A-Z]/g, function(match){
725
+ return ('-' + match.charAt(0).toLowerCase());
726
+ });
727
+ },
728
+
729
+ capitalize: function(){
730
+ return this.replace(/\b[a-z]/g, function(match){
731
+ return match.toUpperCase();
732
+ });
733
+ },
734
+
735
+ escapeRegExp: function(){
736
+ return this.replace(/([-.*+?^${}()|[\]\/\\])/g, '\\$1');
737
+ },
738
+
739
+ toInt: function(base){
740
+ return parseInt(this, base || 10);
741
+ },
742
+
743
+ toFloat: function(){
744
+ return parseFloat(this);
745
+ },
746
+
747
+ hexToRgb: function(array){
748
+ var hex = this.match(/^#?(\w{1,2})(\w{1,2})(\w{1,2})$/);
749
+ return (hex) ? hex.slice(1).hexToRgb(array) : null;
750
+ },
751
+
752
+ rgbToHex: function(array){
753
+ var rgb = this.match(/\d{1,3}/g);
754
+ return (rgb) ? rgb.rgbToHex(array) : null;
755
+ },
756
+
757
+ substitute: function(object, regexp){
758
+ return this.replace(regexp || (/\\?\{([^{}]+)\}/g), function(match, name){
759
+ if (match.charAt(0) == '\\') return match.slice(1);
760
+ return (object[name] != undefined) ? object[name] : '';
761
+ });
762
+ }
763
+
764
+ });
765
+
766
+
767
+ /*
768
+ ---
769
+
770
+ name: Browser
771
+
772
+ description: The Browser Object. Contains Browser initialization, Window and Document, and the Browser Hash.
773
+
774
+ license: MIT-style license.
775
+
776
+ requires: [Array, Function, Number, String]
777
+
778
+ provides: [Browser, Window, Document]
779
+
780
+ ...
781
+ */
782
+
783
+ (function(){
784
+
785
+ var document = this.document;
786
+ var window = document.window = this;
787
+
788
+ var UID = 1;
789
+
790
+ this.$uid = (window.ActiveXObject) ? function(item){
791
+ return (item.uid || (item.uid = [UID++]))[0];
792
+ } : function(item){
793
+ return item.uid || (item.uid = UID++);
794
+ };
795
+
796
+ $uid(window);
797
+ $uid(document);
798
+
799
+ var ua = navigator.userAgent.toLowerCase(),
800
+ platform = navigator.platform.toLowerCase(),
801
+ UA = ua.match(/(opera|ie|firefox|chrome|version)[\s\/:]([\w\d\.]+)?.*?(safari|version[\s\/:]([\w\d\.]+)|$)/) || [null, 'unknown', 0];
802
+
803
+ var Browser = this.Browser = {
804
+
805
+ extend: Function.prototype.extend,
806
+
807
+ name: (UA[1] == 'version') ? UA[3] : UA[1],
808
+
809
+ version: parseFloat((UA[1] == 'opera' && UA[4]) ? UA[4] : UA[2]),
810
+
811
+ Platform: {
812
+ name: ua.match(/ip(?:ad|od|hone)/) ? 'ios' : (ua.match(/(?:webos|android)/) || platform.match(/mac|win|linux/) || ['other'])[0]
813
+ },
814
+
815
+ Features: {
816
+ xpath: !!(document.evaluate),
817
+ air: !!(window.runtime),
818
+ query: !!(document.querySelector),
819
+ json: !!(window.JSON)
820
+ },
821
+
822
+ Plugins: {}
823
+
824
+ };
825
+
826
+ Browser[Browser.name] = true;
827
+ Browser[Browser.name + parseInt(Browser.version, 10)] = true;
828
+ Browser.Platform[Browser.Platform.name] = true;
829
+
830
+ // Request
831
+
832
+ Browser.Request = (function(){
833
+
834
+ var XMLHTTP = function(){
835
+ return new XMLHttpRequest();
836
+ };
837
+
838
+ var MSXML2 = function(){
839
+ return new ActiveXObject('MSXML2.XMLHTTP');
840
+ };
841
+
842
+ var MSXML = function(){
843
+ return new ActiveXObject('Microsoft.XMLHTTP');
844
+ };
845
+
846
+ return Function.attempt(function(){
847
+ XMLHTTP();
848
+ return XMLHTTP;
849
+ }, function(){
850
+ MSXML2();
851
+ return MSXML2;
852
+ }, function(){
853
+ MSXML();
854
+ return MSXML;
855
+ });
856
+
857
+ })();
858
+
859
+ Browser.Features.xhr = !!(Browser.Request);
860
+
861
+ // Flash detection
862
+
863
+ var version = (Function.attempt(function(){
864
+ return navigator.plugins['Shockwave Flash'].description;
865
+ }, function(){
866
+ return new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version');
867
+ }) || '0 r0').match(/\d+/g);
868
+
869
+ Browser.Plugins.Flash = {
870
+ version: Number(version[0] || '0.' + version[1]) || 0,
871
+ build: Number(version[2]) || 0
872
+ };
873
+
874
+ // String scripts
875
+
876
+ Browser.exec = function(text){
877
+ if (!text) return text;
878
+ if (window.execScript){
879
+ window.execScript(text);
880
+ } else {
881
+ var script = document.createElement('script');
882
+ script.setAttribute('type', 'text/javascript');
883
+ script.text = text;
884
+ document.head.appendChild(script);
885
+ document.head.removeChild(script);
886
+ }
887
+ return text;
888
+ };
889
+
890
+ String.implement('stripScripts', function(exec){
891
+ var scripts = '';
892
+ var text = this.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi, function(all, code){
893
+ scripts += code + '\n';
894
+ return '';
895
+ });
896
+ if (exec === true) Browser.exec(scripts);
897
+ else if (typeOf(exec) == 'function') exec(scripts, text);
898
+ return text;
899
+ });
900
+
901
+ // Window, Document
902
+
903
+ Browser.extend({
904
+ Document: this.Document,
905
+ Window: this.Window,
906
+ Element: this.Element,
907
+ Event: this.Event
908
+ });
909
+
910
+ this.Window = this.$constructor = new Type('Window', function(){});
911
+
912
+ this.$family = Function.from('window').hide();
913
+
914
+ Window.mirror(function(name, method){
915
+ window[name] = method;
916
+ });
917
+
918
+ this.Document = document.$constructor = new Type('Document', function(){});
919
+
920
+ document.$family = Function.from('document').hide();
921
+
922
+ Document.mirror(function(name, method){
923
+ document[name] = method;
924
+ });
925
+
926
+ document.html = document.documentElement;
927
+ document.head = document.getElementsByTagName('head')[0];
928
+
929
+ if (document.execCommand) try {
930
+ document.execCommand("BackgroundImageCache", false, true);
931
+ } catch (e){}
932
+
933
+ if (this.attachEvent && !this.addEventListener){
934
+ var unloadEvent = function(){
935
+ this.detachEvent('onunload', unloadEvent);
936
+ document.head = document.html = document.window = null;
937
+ };
938
+ this.attachEvent('onunload', unloadEvent);
939
+ }
940
+
941
+ // IE fails on collections and <select>.options (refers to <select>)
942
+ var arrayFrom = Array.from;
943
+ try {
944
+ arrayFrom(document.html.childNodes);
945
+ } catch(e){
946
+ Array.from = function(item){
947
+ if (typeof item != 'string' && Type.isEnumerable(item) && typeOf(item) != 'array'){
948
+ var i = item.length, array = new Array(i);
949
+ while (i--) array[i] = item[i];
950
+ return array;
951
+ }
952
+ return arrayFrom(item);
953
+ };
954
+
955
+ var prototype = Array.prototype,
956
+ slice = prototype.slice;
957
+ ['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift', 'concat', 'join', 'slice'].each(function(name){
958
+ var method = prototype[name];
959
+ Array[name] = function(item){
960
+ return method.apply(Array.from(item), slice.call(arguments, 1));
961
+ };
962
+ });
963
+ }
964
+
965
+
966
+
967
+ })();
968
+
969
+
970
+ /*
971
+ ---
972
+ name: Slick.Parser
973
+ description: Standalone CSS3 Selector parser
974
+ provides: Slick.Parser
975
+ ...
976
+ */
977
+
978
+ (function(){
979
+
980
+ var parsed,
981
+ separatorIndex,
982
+ combinatorIndex,
983
+ reversed,
984
+ cache = {},
985
+ reverseCache = {},
986
+ reUnescape = /\\/g;
987
+
988
+ var parse = function(expression, isReversed){
989
+ if (!expression) return null;
990
+ if (expression.Slick === true) return expression;
991
+ expression = ('' + expression).replace(/^\s+|\s+$/g, '');
992
+ reversed = !!isReversed;
993
+ var currentCache = (reversed) ? reverseCache : cache;
994
+ if (currentCache[expression]) return currentCache[expression];
995
+ parsed = {Slick: true, expressions: [], raw: expression, reverse: function(){
996
+ return parse(this.raw, true);
997
+ }};
998
+ separatorIndex = -1;
999
+ while (expression != (expression = expression.replace(regexp, parser)));
1000
+ parsed.length = parsed.expressions.length;
1001
+ return currentCache[expression] = (reversed) ? reverse(parsed) : parsed;
1002
+ };
1003
+
1004
+ var reverseCombinator = function(combinator){
1005
+ if (combinator === '!') return ' ';
1006
+ else if (combinator === ' ') return '!';
1007
+ else if ((/^!/).test(combinator)) return combinator.replace(/^!/, '');
1008
+ else return '!' + combinator;
1009
+ };
1010
+
1011
+ var reverse = function(expression){
1012
+ var expressions = expression.expressions;
1013
+ for (var i = 0; i < expressions.length; i++){
1014
+ var exp = expressions[i];
1015
+ var last = {parts: [], tag: '*', combinator: reverseCombinator(exp[0].combinator)};
1016
+
1017
+ for (var j = 0; j < exp.length; j++){
1018
+ var cexp = exp[j];
1019
+ if (!cexp.reverseCombinator) cexp.reverseCombinator = ' ';
1020
+ cexp.combinator = cexp.reverseCombinator;
1021
+ delete cexp.reverseCombinator;
1022
+ }
1023
+
1024
+ exp.reverse().push(last);
1025
+ }
1026
+ return expression;
1027
+ };
1028
+
1029
+ var escapeRegExp = function(string){// Credit: XRegExp 0.6.1 (c) 2007-2008 Steven Levithan <http://stevenlevithan.com/regex/xregexp/> MIT License
1030
+ return string.replace(/[-[\]{}()*+?.\\^$|,#\s]/g, "\\$&");
1031
+ };
1032
+
1033
+ var regexp = new RegExp(
1034
+ /*
1035
+ #!/usr/bin/env ruby
1036
+ puts "\t\t" + DATA.read.gsub(/\(\?x\)|\s+#.*$|\s+|\\$|\\n/,'')
1037
+ __END__
1038
+ "(?x)^(?:\
1039
+ \\s* ( , ) \\s* # Separator \n\
1040
+ | \\s* ( <combinator>+ ) \\s* # Combinator \n\
1041
+ | ( \\s+ ) # CombinatorChildren \n\
1042
+ | ( <unicode>+ | \\* ) # Tag \n\
1043
+ | \\# ( <unicode>+ ) # ID \n\
1044
+ | \\. ( <unicode>+ ) # ClassName \n\
1045
+ | # Attribute \n\
1046
+ \\[ \
1047
+ \\s* (<unicode1>+) (?: \
1048
+ \\s* ([*^$!~|]?=) (?: \
1049
+ \\s* (?:\
1050
+ ([\"']?)(.*?)\\9 \
1051
+ )\
1052
+ ) \
1053
+ )? \\s* \
1054
+ \\](?!\\]) \n\
1055
+ | :+ ( <unicode>+ )(?:\
1056
+ \\( (?:\
1057
+ ([\"']?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\12\
1058
+ ) \\)\
1059
+ )?\
1060
+ )"
1061
+ */
1062
+ "^(?:\\s*(,)\\s*|\\s*(<combinator>+)\\s*|(\\s+)|(<unicode>+|\\*)|\\#(<unicode>+)|\\.(<unicode>+)|\\[\\s*(<unicode1>+)(?:\\s*([*^$!~|]?=)(?:\\s*(?:([\"']?)(.*?)\\9)))?\\s*\\](?!\\])|:+(<unicode>+)(?:\\((?:([\"']?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\12)\\))?)"
1063
+ .replace(/<combinator>/, '[' + escapeRegExp(">+~`!@$%^&={}\\;</") + ']')
1064
+ .replace(/<unicode>/g, '(?:[\\w\\u00a1-\\uFFFF-]|\\\\[^\\s0-9a-f])')
1065
+ .replace(/<unicode1>/g, '(?:[:\\w\\u00a1-\\uFFFF-]|\\\\[^\\s0-9a-f])')
1066
+ );
1067
+
1068
+ function parser(
1069
+ rawMatch,
1070
+
1071
+ separator,
1072
+ combinator,
1073
+ combinatorChildren,
1074
+
1075
+ tagName,
1076
+ id,
1077
+ className,
1078
+
1079
+ attributeKey,
1080
+ attributeOperator,
1081
+ attributeQuote,
1082
+ attributeValue,
1083
+
1084
+ pseudoClass,
1085
+ pseudoQuote,
1086
+ pseudoClassValue
1087
+ ){
1088
+ if (separator || separatorIndex === -1){
1089
+ parsed.expressions[++separatorIndex] = [];
1090
+ combinatorIndex = -1;
1091
+ if (separator) return '';
1092
+ }
1093
+
1094
+ if (combinator || combinatorChildren || combinatorIndex === -1){
1095
+ combinator = combinator || ' ';
1096
+ var currentSeparator = parsed.expressions[separatorIndex];
1097
+ if (reversed && currentSeparator[combinatorIndex])
1098
+ currentSeparator[combinatorIndex].reverseCombinator = reverseCombinator(combinator);
1099
+ currentSeparator[++combinatorIndex] = {combinator: combinator, tag: '*'};
1100
+ }
1101
+
1102
+ var currentParsed = parsed.expressions[separatorIndex][combinatorIndex];
1103
+
1104
+ if (tagName){
1105
+ currentParsed.tag = tagName.replace(reUnescape, '');
1106
+
1107
+ } else if (id){
1108
+ currentParsed.id = id.replace(reUnescape, '');
1109
+
1110
+ } else if (className){
1111
+ className = className.replace(reUnescape, '');
1112
+
1113
+ if (!currentParsed.classList) currentParsed.classList = [];
1114
+ if (!currentParsed.classes) currentParsed.classes = [];
1115
+ currentParsed.classList.push(className);
1116
+ currentParsed.classes.push({
1117
+ value: className,
1118
+ regexp: new RegExp('(^|\\s)' + escapeRegExp(className) + '(\\s|$)')
1119
+ });
1120
+
1121
+ } else if (pseudoClass){
1122
+ pseudoClassValue = pseudoClassValue ? pseudoClassValue.replace(reUnescape, '') : null;
1123
+
1124
+ if (!currentParsed.pseudos) currentParsed.pseudos = [];
1125
+ currentParsed.pseudos.push({
1126
+ key: pseudoClass.replace(reUnescape, ''),
1127
+ value: pseudoClassValue
1128
+ });
1129
+
1130
+ } else if (attributeKey){
1131
+ attributeKey = attributeKey.replace(reUnescape, '');
1132
+ attributeValue = (attributeValue || '').replace(reUnescape, '');
1133
+
1134
+ var test, regexp;
1135
+
1136
+ switch (attributeOperator){
1137
+ case '^=' : regexp = new RegExp( '^'+ escapeRegExp(attributeValue) ); break;
1138
+ case '$=' : regexp = new RegExp( escapeRegExp(attributeValue) +'$' ); break;
1139
+ case '~=' : regexp = new RegExp( '(^|\\s)'+ escapeRegExp(attributeValue) +'(\\s|$)' ); break;
1140
+ case '|=' : regexp = new RegExp( '^'+ escapeRegExp(attributeValue) +'(-|$)' ); break;
1141
+ case '=' : test = function(value){
1142
+ return attributeValue == value;
1143
+ }; break;
1144
+ case '*=' : test = function(value){
1145
+ return value && value.indexOf(attributeValue) > -1;
1146
+ }; break;
1147
+ case '!=' : test = function(value){
1148
+ return attributeValue != value;
1149
+ }; break;
1150
+ default : test = function(value){
1151
+ return !!value;
1152
+ };
1153
+ }
1154
+
1155
+ if (!test) test = function(value){
1156
+ return value && regexp.test(value);
1157
+ };
1158
+
1159
+ if (!currentParsed.attributes) currentParsed.attributes = [];
1160
+ currentParsed.attributes.push({
1161
+ key: attributeKey,
1162
+ operator: attributeOperator,
1163
+ value: attributeValue,
1164
+ test: test
1165
+ });
1166
+
1167
+ }
1168
+
1169
+ return '';
1170
+ };
1171
+
1172
+ // Slick NS
1173
+
1174
+ var Slick = (this.Slick || {});
1175
+
1176
+ Slick.parse = function(expression){
1177
+ return parse(expression);
1178
+ };
1179
+
1180
+ Slick.escapeRegExp = escapeRegExp;
1181
+
1182
+ if (!this.Slick) this.Slick = Slick;
1183
+
1184
+ }).apply(/*<CommonJS>*/(typeof exports != 'undefined') ? exports : /*</CommonJS>*/this);
1185
+
1186
+
1187
+ /*
1188
+ ---
1189
+ name: Slick.Finder
1190
+ description: The new, superfast css selector engine.
1191
+ provides: Slick.Finder
1192
+ requires: Slick.Parser
1193
+ ...
1194
+ */
1195
+
1196
+ (function(){
1197
+
1198
+ var local = {};
1199
+
1200
+ // Feature / Bug detection
1201
+
1202
+ local.isNativeCode = function(fn){
1203
+ return (/\{\s*\[native code\]\s*\}/).test('' + fn);
1204
+ };
1205
+
1206
+ local.isXML = function(document){
1207
+ return (!!document.xmlVersion) || (!!document.xml) || (Object.prototype.toString.call(document) === '[object XMLDocument]') ||
1208
+ (document.nodeType === 9 && document.documentElement.nodeName !== 'HTML');
1209
+ };
1210
+
1211
+ local.setDocument = function(document){
1212
+
1213
+ // convert elements / window arguments to document. if document cannot be extrapolated, the function returns.
1214
+
1215
+ if (document.nodeType === 9); // document
1216
+ else if (document.ownerDocument) document = document.ownerDocument; // node
1217
+ else if (document.navigator) document = document.document; // window
1218
+ else return;
1219
+
1220
+ // check if it's the old document
1221
+
1222
+ if (this.document === document) return;
1223
+ this.document = document;
1224
+ var root = this.root = document.documentElement;
1225
+
1226
+ // document sort
1227
+
1228
+ this.brokenStarGEBTN
1229
+ = this.starSelectsClosedQSA
1230
+ = this.idGetsName
1231
+ = this.brokenMixedCaseQSA
1232
+ = this.brokenGEBCN
1233
+ = false;
1234
+
1235
+ var starSelectsClosed, starSelectsComments,
1236
+ brokenSecondClassNameGEBCN, cachedGetElementsByClassName;
1237
+
1238
+ if (!(this.isXMLDocument = this.isXML(document))){
1239
+
1240
+ var testNode = document.createElement('div');
1241
+ this.root.appendChild(testNode);
1242
+ var selected, id;
1243
+
1244
+ // IE returns comment nodes for getElementsByTagName('*') for some documents
1245
+ testNode.appendChild(document.createComment(''));
1246
+ starSelectsComments = (testNode.getElementsByTagName('*').length > 0);
1247
+
1248
+ // IE returns closed nodes (EG:"</foo>") for getElementsByTagName('*') for some documents
1249
+ try {
1250
+ testNode.innerHTML = 'foo</foo>';
1251
+ selected = testNode.getElementsByTagName('*');
1252
+ starSelectsClosed = (selected && selected.length && selected[0].nodeName.charAt(0) == '/');
1253
+ } catch(e){};
1254
+
1255
+ this.brokenStarGEBTN = starSelectsComments || starSelectsClosed;
1256
+
1257
+ // IE 8 returns closed nodes (EG:"</foo>") for querySelectorAll('*') for some documents
1258
+ if (testNode.querySelectorAll) try {
1259
+ testNode.innerHTML = 'foo</foo>';
1260
+ selected = testNode.querySelectorAll('*');
1261
+ this.starSelectsClosedQSA = (selected && selected.length && selected[0].nodeName.charAt(0) == '/');
1262
+ } catch(e){};
1263
+
1264
+ // IE returns elements with the name instead of just id for getElementById for some documents
1265
+ try {
1266
+ id = 'slick_id_gets_name';
1267
+ testNode.innerHTML = ('<a name='+id+'></a><b id='+id+'></b>');
1268
+ this.idGetsName = testNode.ownerDocument.getElementById(id) === testNode.firstChild;
1269
+ } catch(e){};
1270
+
1271
+ // Safari 3.2 QSA doesnt work with mixedcase on quirksmode
1272
+ try {
1273
+ testNode.innerHTML = '<a class="MiXedCaSe"></a>';
1274
+ this.brokenMixedCaseQSA = !testNode.querySelectorAll('.MiXedCaSe').length;
1275
+ } catch(e){};
1276
+
1277
+ try {
1278
+ testNode.innerHTML = '<a class="f"></a><a class="b"></a>';
1279
+ testNode.getElementsByClassName('b').length;
1280
+ testNode.firstChild.className = 'b';
1281
+ cachedGetElementsByClassName = (testNode.getElementsByClassName('b').length != 2);
1282
+ } catch(e){};
1283
+
1284
+ // Opera 9.6 GEBCN doesnt detects the class if its not the first one
1285
+ try {
1286
+ testNode.innerHTML = '<a class="a"></a><a class="f b a"></a>';
1287
+ brokenSecondClassNameGEBCN = (testNode.getElementsByClassName('a').length != 2);
1288
+ } catch(e){};
1289
+
1290
+ this.brokenGEBCN = cachedGetElementsByClassName || brokenSecondClassNameGEBCN;
1291
+
1292
+ this.root.removeChild(testNode);
1293
+ testNode = null;
1294
+
1295
+ }
1296
+
1297
+ // hasAttribute
1298
+
1299
+ this.hasAttribute = (root && this.isNativeCode(root.hasAttribute)) ? function(node, attribute) {
1300
+ return node.hasAttribute(attribute);
1301
+ } : function(node, attribute) {
1302
+ node = node.getAttributeNode(attribute);
1303
+ return !!(node && (node.specified || node.nodeValue));
1304
+ };
1305
+
1306
+ // contains
1307
+ // FIXME: Add specs: local.contains should be different for xml and html documents?
1308
+ this.contains = (root && this.isNativeCode(root.contains)) ? function(context, node){
1309
+ return context.contains(node);
1310
+ } : (root && root.compareDocumentPosition) ? function(context, node){
1311
+ return context === node || !!(context.compareDocumentPosition(node) & 16);
1312
+ } : function(context, node){
1313
+ if (node) do {
1314
+ if (node === context) return true;
1315
+ } while ((node = node.parentNode));
1316
+ return false;
1317
+ };
1318
+
1319
+ // document order sorting
1320
+ // credits to Sizzle (http://sizzlejs.com/)
1321
+
1322
+ this.documentSorter = (root.compareDocumentPosition) ? function(a, b){
1323
+ if (!a.compareDocumentPosition || !b.compareDocumentPosition) return 0;
1324
+ return a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;
1325
+ } : ('sourceIndex' in root) ? function(a, b){
1326
+ if (!a.sourceIndex || !b.sourceIndex) return 0;
1327
+ return a.sourceIndex - b.sourceIndex;
1328
+ } : (document.createRange) ? function(a, b){
1329
+ if (!a.ownerDocument || !b.ownerDocument) return 0;
1330
+ var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();
1331
+ aRange.setStart(a, 0);
1332
+ aRange.setEnd(a, 0);
1333
+ bRange.setStart(b, 0);
1334
+ bRange.setEnd(b, 0);
1335
+ return aRange.compareBoundaryPoints(Range.START_TO_END, bRange);
1336
+ } : null ;
1337
+
1338
+ this.getUID = (this.isXMLDocument) ? this.getUIDXML : this.getUIDHTML;
1339
+
1340
+ };
1341
+
1342
+ // Main Method
1343
+
1344
+ local.search = function(context, expression, append, first){
1345
+
1346
+ var found = this.found = (first) ? null : (append || []);
1347
+
1348
+ // no need to pass a context if its the current document
1349
+
1350
+ if (expression == null){
1351
+ expression = context;
1352
+ context = document; // the current document, not local.document, cause it would be confusing
1353
+ }
1354
+
1355
+ // context checks
1356
+
1357
+ if (!context) return found; // No context
1358
+ if (context.navigator) context = context.document; // Convert the node from a window to a document
1359
+ else if (!context.nodeType) return found; // Reject misc junk input
1360
+
1361
+ // setup
1362
+
1363
+ var parsed, i;
1364
+
1365
+ var uniques = this.uniques = {};
1366
+
1367
+ if (this.document !== (context.ownerDocument || context)) this.setDocument(context);
1368
+
1369
+ // expression checks
1370
+
1371
+ if (typeof expression == 'string'){ // expression is a string
1372
+
1373
+ // Overrides
1374
+
1375
+ for (i = this.overrides.length; i--;){
1376
+ var override = this.overrides[i];
1377
+ if (override.regexp.test(expression)){
1378
+ var result = override.method.call(context, expression, found, first);
1379
+ if (result === false) continue;
1380
+ if (result === true) return found;
1381
+ return result;
1382
+ }
1383
+ }
1384
+
1385
+ parsed = this.Slick.parse(expression);
1386
+ if (!parsed.length) return found;
1387
+ } else if (expression == null){ // there is no expression
1388
+ return found;
1389
+ } else if (expression.Slick){ // expression is a parsed Slick object
1390
+ parsed = expression;
1391
+ } else if (this.contains(context.documentElement || context, expression)){ // expression is a node
1392
+ (found) ? found.push(expression) : found = expression;
1393
+ return found;
1394
+ } else { // other junk
1395
+ return found;
1396
+ }
1397
+
1398
+ // cache elements for the nth selectors
1399
+
1400
+ /*<pseudo-selectors>*//*<nth-pseudo-selectors>*/
1401
+
1402
+ this.posNTH = {};
1403
+ this.posNTHLast = {};
1404
+ this.posNTHType = {};
1405
+ this.posNTHTypeLast = {};
1406
+
1407
+ /*</nth-pseudo-selectors>*//*</pseudo-selectors>*/
1408
+
1409
+ // should sort if there are nodes in append and if you pass multiple expressions.
1410
+ // should remove duplicates if append already has items
1411
+ var shouldUniques = !!(append && append.length);
1412
+
1413
+ // if append is null and there is only a single selector with one expression use pushArray, else use pushUID
1414
+ this.push = (!shouldUniques && (first || (parsed.length == 1 && parsed.expressions[0].length == 1))) ? this.pushArray : this.pushUID;
1415
+
1416
+ if (found == null) found = [];
1417
+
1418
+ // avoid duplicating items already in the append array
1419
+ if (shouldUniques) for (i = found.length; i--;) this.uniques[this.getUID(found[i])] = true;
1420
+
1421
+ // default engine
1422
+
1423
+ var j, m, n;
1424
+ var combinator, tag, id, classList, classes, attributes, pseudos;
1425
+ var currentItems, currentExpression, currentBit, lastBit, expressions = parsed.expressions;
1426
+
1427
+ search: for (i = 0; (currentExpression = expressions[i]); i++) for (j = 0; (currentBit = currentExpression[j]); j++){
1428
+
1429
+ combinator = 'combinator:' + currentBit.combinator;
1430
+ if (!this[combinator]) continue search;
1431
+
1432
+ tag = (this.isXMLDocument) ? currentBit.tag : currentBit.tag.toUpperCase();
1433
+ id = currentBit.id;
1434
+ classList = currentBit.classList;
1435
+ classes = currentBit.classes;
1436
+ attributes = currentBit.attributes;
1437
+ pseudos = currentBit.pseudos;
1438
+ lastBit = (j === (currentExpression.length - 1));
1439
+
1440
+ this.bitUniques = {};
1441
+
1442
+ if (lastBit){
1443
+ this.uniques = uniques;
1444
+ this.found = found;
1445
+ } else {
1446
+ this.uniques = {};
1447
+ this.found = [];
1448
+ }
1449
+
1450
+ if (j === 0){
1451
+ this[combinator](context, tag, id, classes, attributes, pseudos, classList);
1452
+ if (first && lastBit && found.length) break search;
1453
+ } else {
1454
+ if (first && lastBit) for (m = 0, n = currentItems.length; m < n; m++){
1455
+ this[combinator](currentItems[m], tag, id, classes, attributes, pseudos, classList);
1456
+ if (found.length) break search;
1457
+ } else for (m = 0, n = currentItems.length; m < n; m++) this[combinator](currentItems[m], tag, id, classes, attributes, pseudos, classList);
1458
+ }
1459
+
1460
+ currentItems = this.found;
1461
+ }
1462
+
1463
+ if (shouldUniques || (parsed.expressions.length > 1)) this.sort(found);
1464
+
1465
+ return (first) ? (found[0] || null) : found;
1466
+ };
1467
+
1468
+ // Utils
1469
+
1470
+ local.uidx = 1;
1471
+ local.uidk = 'slick:uniqueid';
1472
+
1473
+ local.getUIDXML = function(node){
1474
+ var uid = node.getAttribute(this.uidk);
1475
+ if (!uid){
1476
+ uid = this.uidx++;
1477
+ node.setAttribute(this.uidk, uid);
1478
+ }
1479
+ return uid;
1480
+ };
1481
+
1482
+ local.getUIDHTML = function(node){
1483
+ return node.uniqueNumber || (node.uniqueNumber = this.uidx++);
1484
+ };
1485
+
1486
+ // sort based on the setDocument documentSorter method.
1487
+
1488
+ local.sort = function(results){
1489
+ if (!this.documentSorter) return results;
1490
+ results.sort(this.documentSorter);
1491
+ return results;
1492
+ };
1493
+
1494
+ /*<pseudo-selectors>*//*<nth-pseudo-selectors>*/
1495
+
1496
+ local.cacheNTH = {};
1497
+
1498
+ local.matchNTH = /^([+-]?\d*)?([a-z]+)?([+-]\d+)?$/;
1499
+
1500
+ local.parseNTHArgument = function(argument){
1501
+ var parsed = argument.match(this.matchNTH);
1502
+ if (!parsed) return false;
1503
+ var special = parsed[2] || false;
1504
+ var a = parsed[1] || 1;
1505
+ if (a == '-') a = -1;
1506
+ var b = +parsed[3] || 0;
1507
+ parsed =
1508
+ (special == 'n') ? {a: a, b: b} :
1509
+ (special == 'odd') ? {a: 2, b: 1} :
1510
+ (special == 'even') ? {a: 2, b: 0} : {a: 0, b: a};
1511
+
1512
+ return (this.cacheNTH[argument] = parsed);
1513
+ };
1514
+
1515
+ local.createNTHPseudo = function(child, sibling, positions, ofType){
1516
+ return function(node, argument){
1517
+ var uid = this.getUID(node);
1518
+ if (!this[positions][uid]){
1519
+ var parent = node.parentNode;
1520
+ if (!parent) return false;
1521
+ var el = parent[child], count = 1;
1522
+ if (ofType){
1523
+ var nodeName = node.nodeName;
1524
+ do {
1525
+ if (el.nodeName !== nodeName) continue;
1526
+ this[positions][this.getUID(el)] = count++;
1527
+ } while ((el = el[sibling]));
1528
+ } else {
1529
+ do {
1530
+ if (el.nodeType !== 1) continue;
1531
+ this[positions][this.getUID(el)] = count++;
1532
+ } while ((el = el[sibling]));
1533
+ }
1534
+ }
1535
+ argument = argument || 'n';
1536
+ var parsed = this.cacheNTH[argument] || this.parseNTHArgument(argument);
1537
+ if (!parsed) return false;
1538
+ var a = parsed.a, b = parsed.b, pos = this[positions][uid];
1539
+ if (a == 0) return b == pos;
1540
+ if (a > 0){
1541
+ if (pos < b) return false;
1542
+ } else {
1543
+ if (b < pos) return false;
1544
+ }
1545
+ return ((pos - b) % a) == 0;
1546
+ };
1547
+ };
1548
+
1549
+ /*</nth-pseudo-selectors>*//*</pseudo-selectors>*/
1550
+
1551
+ local.pushArray = function(node, tag, id, classes, attributes, pseudos){
1552
+ if (this.matchSelector(node, tag, id, classes, attributes, pseudos)) this.found.push(node);
1553
+ };
1554
+
1555
+ local.pushUID = function(node, tag, id, classes, attributes, pseudos){
1556
+ var uid = this.getUID(node);
1557
+ if (!this.uniques[uid] && this.matchSelector(node, tag, id, classes, attributes, pseudos)){
1558
+ this.uniques[uid] = true;
1559
+ this.found.push(node);
1560
+ }
1561
+ };
1562
+
1563
+ local.matchNode = function(node, selector){
1564
+ var parsed = this.Slick.parse(selector);
1565
+ if (!parsed) return true;
1566
+
1567
+ // simple (single) selectors
1568
+ if(parsed.length == 1 && parsed.expressions[0].length == 1){
1569
+ var exp = parsed.expressions[0][0];
1570
+ return this.matchSelector(node, (this.isXMLDocument) ? exp.tag : exp.tag.toUpperCase(), exp.id, exp.classes, exp.attributes, exp.pseudos);
1571
+ }
1572
+
1573
+ var nodes = this.search(this.document, parsed);
1574
+ for (var i = 0, item; item = nodes[i++];){
1575
+ if (item === node) return true;
1576
+ }
1577
+ return false;
1578
+ };
1579
+
1580
+ local.matchPseudo = function(node, name, argument){
1581
+ var pseudoName = 'pseudo:' + name;
1582
+ if (this[pseudoName]) return this[pseudoName](node, argument);
1583
+ var attribute = this.getAttribute(node, name);
1584
+ return (argument) ? argument == attribute : !!attribute;
1585
+ };
1586
+
1587
+ local.matchSelector = function(node, tag, id, classes, attributes, pseudos){
1588
+ if (tag){
1589
+ if (tag == '*'){
1590
+ if (node.nodeName < '@') return false; // Fix for comment nodes and closed nodes
1591
+ } else {
1592
+ if (node.nodeName != tag) return false;
1593
+ }
1594
+ }
1595
+
1596
+ if (id && node.getAttribute('id') != id) return false;
1597
+
1598
+ var i, part, cls;
1599
+ if (classes) for (i = classes.length; i--;){
1600
+ cls = ('className' in node) ? node.className : node.getAttribute('class');
1601
+ if (!(cls && classes[i].regexp.test(cls))) return false;
1602
+ }
1603
+ if (attributes) for (i = attributes.length; i--;){
1604
+ part = attributes[i];
1605
+ if (part.operator ? !part.test(this.getAttribute(node, part.key)) : !this.hasAttribute(node, part.key)) return false;
1606
+ }
1607
+ if (pseudos) for (i = pseudos.length; i--;){
1608
+ part = pseudos[i];
1609
+ if (!this.matchPseudo(node, part.key, part.value)) return false;
1610
+ }
1611
+ return true;
1612
+ };
1613
+
1614
+ var combinators = {
1615
+
1616
+ ' ': function(node, tag, id, classes, attributes, pseudos, classList){ // all child nodes, any level
1617
+
1618
+ var i, item, children;
1619
+
1620
+ if (!this.isXMLDocument){
1621
+ getById: if (id){
1622
+ item = this.document.getElementById(id);
1623
+ if ((!item && node.all) || (this.idGetsName && item && item.getAttributeNode('id').nodeValue != id)){
1624
+ // all[id] returns all the elements with that name or id inside node
1625
+ // if theres just one it will return the element, else it will be a collection
1626
+ children = node.all[id];
1627
+ if (!children) return;
1628
+ if (!children[0]) children = [children];
1629
+ for (i = 0; item = children[i++];) if (item.getAttributeNode('id').nodeValue == id){
1630
+ this.push(item, tag, null, classes, attributes, pseudos);
1631
+ break;
1632
+ }
1633
+ return;
1634
+ }
1635
+ if (!item){
1636
+ // if the context is in the dom we return, else we will try GEBTN, breaking the getById label
1637
+ if (this.contains(this.document.documentElement, node)) return;
1638
+ else break getById;
1639
+ } else if (this.document !== node && !this.contains(node, item)) return;
1640
+ this.push(item, tag, null, classes, attributes, pseudos);
1641
+ return;
1642
+ }
1643
+ getByClass: if (classes && node.getElementsByClassName && !this.brokenGEBCN){
1644
+ children = node.getElementsByClassName(classList.join(' '));
1645
+ if (!(children && children.length)) break getByClass;
1646
+ for (i = 0; item = children[i++];) this.push(item, tag, id, null, attributes, pseudos);
1647
+ return;
1648
+ }
1649
+ }
1650
+ getByTag: {
1651
+ children = node.getElementsByTagName(tag);
1652
+ if (!(children && children.length)) break getByTag;
1653
+ if (!this.brokenStarGEBTN) tag = null;
1654
+ for (i = 0; item = children[i++];) this.push(item, tag, id, classes, attributes, pseudos);
1655
+ }
1656
+ },
1657
+
1658
+ '>': function(node, tag, id, classes, attributes, pseudos){ // direct children
1659
+ if ((node = node.firstChild)) do {
1660
+ if (node.nodeType === 1) this.push(node, tag, id, classes, attributes, pseudos);
1661
+ } while ((node = node.nextSibling));
1662
+ },
1663
+
1664
+ '+': function(node, tag, id, classes, attributes, pseudos){ // next sibling
1665
+ while ((node = node.nextSibling)) if (node.nodeType === 1){
1666
+ this.push(node, tag, id, classes, attributes, pseudos);
1667
+ break;
1668
+ }
1669
+ },
1670
+
1671
+ '^': function(node, tag, id, classes, attributes, pseudos){ // first child
1672
+ node = node.firstChild;
1673
+ if (node){
1674
+ if (node.nodeType === 1) this.push(node, tag, id, classes, attributes, pseudos);
1675
+ else this['combinator:+'](node, tag, id, classes, attributes, pseudos);
1676
+ }
1677
+ },
1678
+
1679
+ '~': function(node, tag, id, classes, attributes, pseudos){ // next siblings
1680
+ while ((node = node.nextSibling)){
1681
+ if (node.nodeType !== 1) continue;
1682
+ var uid = this.getUID(node);
1683
+ if (this.bitUniques[uid]) break;
1684
+ this.bitUniques[uid] = true;
1685
+ this.push(node, tag, id, classes, attributes, pseudos);
1686
+ }
1687
+ },
1688
+
1689
+ '++': function(node, tag, id, classes, attributes, pseudos){ // next sibling and previous sibling
1690
+ this['combinator:+'](node, tag, id, classes, attributes, pseudos);
1691
+ this['combinator:!+'](node, tag, id, classes, attributes, pseudos);
1692
+ },
1693
+
1694
+ '~~': function(node, tag, id, classes, attributes, pseudos){ // next siblings and previous siblings
1695
+ this['combinator:~'](node, tag, id, classes, attributes, pseudos);
1696
+ this['combinator:!~'](node, tag, id, classes, attributes, pseudos);
1697
+ },
1698
+
1699
+ '!': function(node, tag, id, classes, attributes, pseudos){ // all parent nodes up to document
1700
+ while ((node = node.parentNode)) if (node !== document) this.push(node, tag, id, classes, attributes, pseudos);
1701
+ },
1702
+
1703
+ '!>': function(node, tag, id, classes, attributes, pseudos){ // direct parent (one level)
1704
+ node = node.parentNode;
1705
+ if (node !== document) this.push(node, tag, id, classes, attributes, pseudos);
1706
+ },
1707
+
1708
+ '!+': function(node, tag, id, classes, attributes, pseudos){ // previous sibling
1709
+ while ((node = node.previousSibling)) if (node.nodeType === 1){
1710
+ this.push(node, tag, id, classes, attributes, pseudos);
1711
+ break;
1712
+ }
1713
+ },
1714
+
1715
+ '!^': function(node, tag, id, classes, attributes, pseudos){ // last child
1716
+ node = node.lastChild;
1717
+ if (node){
1718
+ if (node.nodeType === 1) this.push(node, tag, id, classes, attributes, pseudos);
1719
+ else this['combinator:!+'](node, tag, id, classes, attributes, pseudos);
1720
+ }
1721
+ },
1722
+
1723
+ '!~': function(node, tag, id, classes, attributes, pseudos){ // previous siblings
1724
+ while ((node = node.previousSibling)){
1725
+ if (node.nodeType !== 1) continue;
1726
+ var uid = this.getUID(node);
1727
+ if (this.bitUniques[uid]) break;
1728
+ this.bitUniques[uid] = true;
1729
+ this.push(node, tag, id, classes, attributes, pseudos);
1730
+ }
1731
+ }
1732
+
1733
+ };
1734
+
1735
+ for (var c in combinators) local['combinator:' + c] = combinators[c];
1736
+
1737
+ var pseudos = {
1738
+
1739
+ /*<pseudo-selectors>*/
1740
+
1741
+ 'empty': function(node){
1742
+ var child = node.firstChild;
1743
+ return !(child && child.nodeType == 1) && !(node.innerText || node.textContent || '').length;
1744
+ },
1745
+
1746
+ 'not': function(node, expression){
1747
+ return !this.matchNode(node, expression);
1748
+ },
1749
+
1750
+ 'contains': function(node, text){
1751
+ return (node.innerText || node.textContent || '').indexOf(text) > -1;
1752
+ },
1753
+
1754
+ 'first-child': function(node){
1755
+ while ((node = node.previousSibling)) if (node.nodeType === 1) return false;
1756
+ return true;
1757
+ },
1758
+
1759
+ 'last-child': function(node){
1760
+ while ((node = node.nextSibling)) if (node.nodeType === 1) return false;
1761
+ return true;
1762
+ },
1763
+
1764
+ 'only-child': function(node){
1765
+ var prev = node;
1766
+ while ((prev = prev.previousSibling)) if (prev.nodeType === 1) return false;
1767
+ var next = node;
1768
+ while ((next = next.nextSibling)) if (next.nodeType === 1) return false;
1769
+ return true;
1770
+ },
1771
+
1772
+ /*<nth-pseudo-selectors>*/
1773
+
1774
+ 'nth-child': local.createNTHPseudo('firstChild', 'nextSibling', 'posNTH'),
1775
+
1776
+ 'nth-last-child': local.createNTHPseudo('lastChild', 'previousSibling', 'posNTHLast'),
1777
+
1778
+ 'nth-of-type': local.createNTHPseudo('firstChild', 'nextSibling', 'posNTHType', true),
1779
+
1780
+ 'nth-last-of-type': local.createNTHPseudo('lastChild', 'previousSibling', 'posNTHTypeLast', true),
1781
+
1782
+ 'index': function(node, index){
1783
+ return this['pseudo:nth-child'](node, '' + index + 1);
1784
+ },
1785
+
1786
+ 'even': function(node, argument){
1787
+ return this['pseudo:nth-child'](node, '2n');
1788
+ },
1789
+
1790
+ 'odd': function(node, argument){
1791
+ return this['pseudo:nth-child'](node, '2n+1');
1792
+ },
1793
+
1794
+ /*</nth-pseudo-selectors>*/
1795
+
1796
+ /*<of-type-pseudo-selectors>*/
1797
+
1798
+ 'first-of-type': function(node){
1799
+ var nodeName = node.nodeName;
1800
+ while ((node = node.previousSibling)) if (node.nodeName === nodeName) return false;
1801
+ return true;
1802
+ },
1803
+
1804
+ 'last-of-type': function(node){
1805
+ var nodeName = node.nodeName;
1806
+ while ((node = node.nextSibling)) if (node.nodeName === nodeName) return false;
1807
+ return true;
1808
+ },
1809
+
1810
+ 'only-of-type': function(node){
1811
+ var prev = node, nodeName = node.nodeName;
1812
+ while ((prev = prev.previousSibling)) if (prev.nodeName === nodeName) return false;
1813
+ var next = node;
1814
+ while ((next = next.nextSibling)) if (next.nodeName === nodeName) return false;
1815
+ return true;
1816
+ },
1817
+
1818
+ /*</of-type-pseudo-selectors>*/
1819
+
1820
+ // custom pseudos
1821
+
1822
+ 'enabled': function(node){
1823
+ return (node.disabled === false);
1824
+ },
1825
+
1826
+ 'disabled': function(node){
1827
+ return (node.disabled === true);
1828
+ },
1829
+
1830
+ 'checked': function(node){
1831
+ return node.checked;
1832
+ },
1833
+
1834
+ 'selected': function(node){
1835
+ return node.selected;
1836
+ },
1837
+
1838
+ 'focus': function(node){
1839
+ return !this.isXMLDocument && this.document.activeElement === node && (node.href || node.type || this.hasAttribute(node, 'tabindex'));
1840
+ }
1841
+
1842
+ /*</pseudo-selectors>*/
1843
+ };
1844
+
1845
+ for (var p in pseudos) local['pseudo:' + p] = pseudos[p];
1846
+
1847
+ // attributes methods
1848
+
1849
+ local.attributeGetters = {
1850
+
1851
+ 'class': function(){
1852
+ return ('className' in this) ? this.className : this.getAttribute('class');
1853
+ },
1854
+
1855
+ 'for': function(){
1856
+ return ('htmlFor' in this) ? this.htmlFor : this.getAttribute('for');
1857
+ },
1858
+
1859
+ 'href': function(){
1860
+ return ('href' in this) ? this.getAttribute('href', 2) : this.getAttribute('href');
1861
+ },
1862
+
1863
+ 'style': function(){
1864
+ return (this.style) ? this.style.cssText : this.getAttribute('style');
1865
+ }
1866
+
1867
+ };
1868
+
1869
+ local.getAttribute = function(node, name){
1870
+ // FIXME: check if getAttribute() will get input elements on a form on this browser
1871
+ // getAttribute is faster than getAttributeNode().nodeValue
1872
+ var method = this.attributeGetters[name];
1873
+ if (method) return method.call(node);
1874
+ var attributeNode = node.getAttributeNode(name);
1875
+ return attributeNode ? attributeNode.nodeValue : null;
1876
+ };
1877
+
1878
+ // overrides
1879
+
1880
+ local.overrides = [];
1881
+
1882
+ local.override = function(regexp, method){
1883
+ this.overrides.push({regexp: regexp, method: method});
1884
+ };
1885
+
1886
+ /*<overrides>*/
1887
+
1888
+ /*<query-selector-override>*/
1889
+
1890
+ local.override(/./, function(expression, found, first){ //querySelectorAll override
1891
+
1892
+ if (!this.querySelectorAll || this.nodeType != 9 || local.isXMLDocument || local.brokenMixedCaseQSA || Slick.disableQSA) return false;
1893
+
1894
+ var nodes, node;
1895
+ try {
1896
+ if (first) return this.querySelector(expression) || null;
1897
+ else nodes = this.querySelectorAll(expression);
1898
+ } catch(error){
1899
+ return false;
1900
+ }
1901
+
1902
+ var i, hasOthers = !!(found.length);
1903
+
1904
+ if (local.starSelectsClosedQSA) for (i = 0; node = nodes[i++];){
1905
+ if (node.nodeName > '@' && (!hasOthers || !local.uniques[local.getUIDHTML(node)])) found.push(node);
1906
+ } else for (i = 0; node = nodes[i++];){
1907
+ if (!hasOthers || !local.uniques[local.getUIDHTML(node)]) found.push(node);
1908
+ }
1909
+
1910
+ if (hasOthers) local.sort(found);
1911
+
1912
+ return true;
1913
+
1914
+ });
1915
+
1916
+ /*</query-selector-override>*/
1917
+
1918
+ /*<tag-override>*/
1919
+
1920
+ local.override(/^[\w-]+$|^\*$/, function(expression, found, first){ // tag override
1921
+ var tag = expression;
1922
+ if (tag == '*' && local.brokenStarGEBTN) return false;
1923
+
1924
+ var nodes = this.getElementsByTagName(tag);
1925
+
1926
+ if (first) return nodes[0] || null;
1927
+ var i, node, hasOthers = !!(found.length);
1928
+
1929
+ for (i = 0; node = nodes[i++];){
1930
+ if (!hasOthers || !local.uniques[local.getUID(node)]) found.push(node);
1931
+ }
1932
+
1933
+ if (hasOthers) local.sort(found);
1934
+
1935
+ return true;
1936
+ });
1937
+
1938
+ /*</tag-override>*/
1939
+
1940
+ /*<class-override>*/
1941
+
1942
+ local.override(/^\.[\w-]+$/, function(expression, found, first){ // class override
1943
+ if (local.isXMLDocument || (!this.getElementsByClassName && this.querySelectorAll)) return false;
1944
+
1945
+ var nodes, node, i, hasOthers = !!(found && found.length), className = expression.substring(1);
1946
+ if (this.getElementsByClassName && !local.brokenGEBCN){
1947
+ nodes = this.getElementsByClassName(className);
1948
+ if (first) return nodes[0] || null;
1949
+ for (i = 0; node = nodes[i++];){
1950
+ if (!hasOthers || !local.uniques[local.getUIDHTML(node)]) found.push(node);
1951
+ }
1952
+ } else {
1953
+ var matchClass = new RegExp('(^|\\s)'+ Slick.escapeRegExp(className) +'(\\s|$)');
1954
+ nodes = this.getElementsByTagName('*');
1955
+ for (i = 0; node = nodes[i++];){
1956
+ className = node.className;
1957
+ if (!className || !matchClass.test(className)) continue;
1958
+ if (first) return node;
1959
+ if (!hasOthers || !local.uniques[local.getUIDHTML(node)]) found.push(node);
1960
+ }
1961
+ }
1962
+ if (hasOthers) local.sort(found);
1963
+ return (first) ? null : true;
1964
+ });
1965
+
1966
+ /*</class-override>*/
1967
+
1968
+ /*<id-override>*/
1969
+
1970
+ local.override(/^#[\w-]+$/, function(expression, found, first){ // ID override
1971
+ if (local.isXMLDocument || this.nodeType != 9) return false;
1972
+
1973
+ var id = expression.substring(1), el = this.getElementById(id);
1974
+ if (!el) return found;
1975
+ if (local.idGetsName && el.getAttributeNode('id').nodeValue != id) return false;
1976
+ if (first) return el || null;
1977
+ var hasOthers = !!(found.length);
1978
+ if (!hasOthers || !local.uniques[local.getUIDHTML(el)]) found.push(el);
1979
+ if (hasOthers) local.sort(found);
1980
+ return true;
1981
+ });
1982
+
1983
+ /*</id-override>*/
1984
+
1985
+ /*</overrides>*/
1986
+
1987
+ if (typeof document != 'undefined') local.setDocument(document);
1988
+
1989
+ // Slick
1990
+
1991
+ var Slick = local.Slick = (this.Slick || {});
1992
+
1993
+ Slick.version = '0.9dev';
1994
+
1995
+ // Slick finder
1996
+
1997
+ Slick.search = function(context, expression, append){
1998
+ return local.search(context, expression, append);
1999
+ };
2000
+
2001
+ Slick.find = function(context, expression){
2002
+ return local.search(context, expression, null, true);
2003
+ };
2004
+
2005
+ // Slick containment checker
2006
+
2007
+ Slick.contains = function(container, node){
2008
+ local.setDocument(container);
2009
+ return local.contains(container, node);
2010
+ };
2011
+
2012
+ // Slick attribute getter
2013
+
2014
+ Slick.getAttribute = function(node, name){
2015
+ return local.getAttribute(node, name);
2016
+ };
2017
+
2018
+ // Slick matcher
2019
+
2020
+ Slick.match = function(node, selector){
2021
+ if (!(node && selector)) return false;
2022
+ if (!selector || selector === node) return true;
2023
+ if (typeof selector != 'string') return false;
2024
+ local.setDocument(node);
2025
+ return local.matchNode(node, selector);
2026
+ };
2027
+
2028
+ // Slick attribute accessor
2029
+
2030
+ Slick.defineAttributeGetter = function(name, fn){
2031
+ local.attributeGetters[name] = fn;
2032
+ return this;
2033
+ };
2034
+
2035
+ Slick.lookupAttributeGetter = function(name){
2036
+ return local.attributeGetters[name];
2037
+ };
2038
+
2039
+ // Slick pseudo accessor
2040
+
2041
+ Slick.definePseudo = function(name, fn){
2042
+ local['pseudo:' + name] = function(node, argument){
2043
+ return fn.call(node, argument);
2044
+ };
2045
+ return this;
2046
+ };
2047
+
2048
+ Slick.lookupPseudo = function(name){
2049
+ var pseudo = local['pseudo:' + name];
2050
+ if (pseudo) return function(argument){
2051
+ return pseudo.call(this, argument);
2052
+ };
2053
+ return null;
2054
+ };
2055
+
2056
+ // Slick overrides accessor
2057
+
2058
+ Slick.override = function(regexp, fn){
2059
+ local.override(regexp, fn);
2060
+ return this;
2061
+ };
2062
+
2063
+ Slick.isXML = local.isXML;
2064
+
2065
+ Slick.uidOf = function(node){
2066
+ return local.getUIDHTML(node);
2067
+ };
2068
+
2069
+ if (!this.Slick) this.Slick = Slick;
2070
+
2071
+ }).apply(/*<CommonJS>*/(typeof exports != 'undefined') ? exports : /*</CommonJS>*/this);
2072
+
2073
+
2074
+ /*
2075
+ ---
2076
+
2077
+ name: Element
2078
+
2079
+ description: One of the most important items in MooTools. Contains the dollar function, the dollars function, and an handful of cross-browser, time-saver methods to let you easily work with HTML Elements.
2080
+
2081
+ license: MIT-style license.
2082
+
2083
+ requires: [Window, Document, Array, String, Function, Number, Slick.Parser, Slick.Finder]
2084
+
2085
+ provides: [Element, Elements, $, $$, Iframe]
2086
+
2087
+ ...
2088
+ */
2089
+
2090
+ var Element = function(tag, props){
2091
+ var konstructor = Element.Constructors[tag];
2092
+ if (konstructor) return konstructor(props);
2093
+ if (typeof tag != 'string') return document.id(tag).set(props);
2094
+
2095
+ if (!props) props = {};
2096
+
2097
+ if (!tag.test(/^[\w-]+$/)){
2098
+ var parsed = Slick.parse(tag).expressions[0][0];
2099
+ tag = (parsed.tag == '*') ? 'div' : parsed.tag;
2100
+ if (parsed.id && props.id == null) props.id = parsed.id;
2101
+
2102
+ var attributes = parsed.attributes;
2103
+ if (attributes) for (var i = 0, l = attributes.length; i < l; i++){
2104
+ var attr = attributes[i];
2105
+ if (attr.value != null && attr.operator == '=' && props[attr.key] == null)
2106
+ props[attr.key] = attr.value;
2107
+ }
2108
+
2109
+ if (parsed.classList && props['class'] == null) props['class'] = parsed.classList.join(' ');
2110
+ }
2111
+
2112
+ return document.newElement(tag, props);
2113
+ };
2114
+
2115
+ if (Browser.Element) Element.prototype = Browser.Element.prototype;
2116
+
2117
+ new Type('Element', Element).mirror(function(name){
2118
+ if (Array.prototype[name]) return;
2119
+
2120
+ var obj = {};
2121
+ obj[name] = function(){
2122
+ var results = [], args = arguments, elements = true;
2123
+ for (var i = 0, l = this.length; i < l; i++){
2124
+ var element = this[i], result = results[i] = element[name].apply(element, args);
2125
+ elements = (elements && typeOf(result) == 'element');
2126
+ }
2127
+ return (elements) ? new Elements(results) : results;
2128
+ };
2129
+
2130
+ Elements.implement(obj);
2131
+ });
2132
+
2133
+ if (!Browser.Element){
2134
+ Element.parent = Object;
2135
+
2136
+ Element.ProtoType = {'$family': Function.from('element').hide()};
2137
+
2138
+ Element.mirror(function(name, method){
2139
+ Element.ProtoType[name] = method;
2140
+ });
2141
+ }
2142
+
2143
+ Element.Constructors = {};
2144
+
2145
+
2146
+
2147
+ var IFrame = new Type('IFrame', function(){
2148
+ var params = Array.link(arguments, {
2149
+ properties: Type.isObject,
2150
+ iframe: function(obj){
2151
+ return (obj != null);
2152
+ }
2153
+ });
2154
+ var props = params.properties || {};
2155
+ var iframe = document.id(params.iframe);
2156
+ var onload = props.onload || function(){};
2157
+ delete props.onload;
2158
+ props.id = props.name = [props.id, props.name, iframe ? (iframe.id || iframe.name) : 'IFrame_' + Date.now()].pick();
2159
+ iframe = new Element(iframe || 'iframe', props);
2160
+ var onFrameLoad = function(){
2161
+ var host = Function.attempt(function(){
2162
+ return iframe.contentWindow.location.host;
2163
+ });
2164
+ if (!host || host == window.location.host){
2165
+ var win = new Window(iframe.contentWindow);
2166
+ new Document(iframe.contentWindow.document);
2167
+ Object.append(win.Element.prototype, Element.ProtoType);
2168
+ }
2169
+ onload.call(iframe.contentWindow, iframe.contentWindow.document);
2170
+ };
2171
+ var contentWindow = Function.attempt(function(){
2172
+ return iframe.contentWindow;
2173
+ });
2174
+ ((contentWindow && contentWindow.document.body) || window.frames[props.id]) ? onFrameLoad() : iframe.addListener('load', onFrameLoad);
2175
+ return iframe;
2176
+ });
2177
+
2178
+ var Elements = this.Elements = function(nodes){
2179
+ if (nodes && nodes.length){
2180
+ var uniques = {}, node;
2181
+ for (var i = 0; node = nodes[i++];){
2182
+ var uid = Slick.uidOf(node);
2183
+ if (!uniques[uid]){
2184
+ uniques[uid] = true;
2185
+ this.push(node);
2186
+ }
2187
+ }
2188
+ }
2189
+ };
2190
+
2191
+ Elements.prototype = {length: 0};
2192
+ Elements.parent = Array;
2193
+
2194
+ new Type('Elements', Elements).implement({
2195
+
2196
+ filter: function(filter, bind){
2197
+ if (!filter) return this;
2198
+ return new Elements(Array.filter(this, (typeOf(filter) == 'string') ? function(item){
2199
+ return item.match(filter);
2200
+ } : filter, bind));
2201
+ }.protect(),
2202
+
2203
+ push: function(){
2204
+ var length = this.length;
2205
+ for (var i = 0, l = arguments.length; i < l; i++){
2206
+ var item = document.id(arguments[i]);
2207
+ if (item) this[length++] = item;
2208
+ }
2209
+ return (this.length = length);
2210
+ }.protect()
2211
+
2212
+ }).implement(Array.prototype);
2213
+
2214
+ Array.mirror(Elements);
2215
+
2216
+ Document.implement({
2217
+
2218
+ newElement: function(tag, props){
2219
+ if (props && props.checked != null) props.defaultChecked = props.checked;
2220
+ return this.id(this.createElement(tag)).set(props);
2221
+ },
2222
+
2223
+ newTextNode: function(text){
2224
+ return this.createTextNode(text);
2225
+ },
2226
+
2227
+ getDocument: function(){
2228
+ return this;
2229
+ },
2230
+
2231
+ getWindow: function(){
2232
+ return this.window;
2233
+ },
2234
+
2235
+ id: (function(){
2236
+
2237
+ var types = {
2238
+
2239
+ string: function(id, nocash, doc){
2240
+ id = Slick.find(doc, '#' + id);
2241
+ return (id) ? types.element(id, nocash) : null;
2242
+ },
2243
+
2244
+ element: function(el, nocash){
2245
+ $uid(el);
2246
+ if (!nocash && !el.$family && !(/^object|embed$/i).test(el.tagName)){
2247
+ Object.append(el, Element.ProtoType);
2248
+ }
2249
+ return el;
2250
+ },
2251
+
2252
+ object: function(obj, nocash, doc){
2253
+ if (obj.toElement) return types.element(obj.toElement(doc), nocash);
2254
+ return null;
2255
+ }
2256
+
2257
+ };
2258
+
2259
+ types.textnode = types.whitespace = types.window = types.document = function(zero){
2260
+ return zero;
2261
+ };
2262
+
2263
+ return function(el, nocash, doc){
2264
+ if (el && el.$family && el.uid) return el;
2265
+ var type = typeOf(el);
2266
+ return (types[type]) ? types[type](el, nocash, doc || document) : null;
2267
+ };
2268
+
2269
+ })()
2270
+
2271
+ });
2272
+
2273
+ if (window.$ == null) Window.implement('$', function(el, nc){
2274
+ return document.id(el, nc, this.document);
2275
+ });
2276
+
2277
+ Window.implement({
2278
+
2279
+ getDocument: function(){
2280
+ return this.document;
2281
+ },
2282
+
2283
+ getWindow: function(){
2284
+ return this;
2285
+ }
2286
+
2287
+ });
2288
+
2289
+ [Document, Element].invoke('implement', {
2290
+
2291
+ getElements: function(expression){
2292
+ return Slick.search(this, expression, new Elements);
2293
+ },
2294
+
2295
+ getElement: function(expression){
2296
+ return document.id(Slick.find(this, expression));
2297
+ }
2298
+
2299
+ });
2300
+
2301
+
2302
+
2303
+ if (window.$$ == null) Window.implement('$$', function(selector){
2304
+ if (arguments.length == 1){
2305
+ if (typeof selector == 'string') return Slick.search(this.document, selector, new Elements);
2306
+ else if (Type.isEnumerable(selector)) return new Elements(selector);
2307
+ }
2308
+ return new Elements(arguments);
2309
+ });
2310
+
2311
+ (function(){
2312
+
2313
+ var collected = {}, storage = {};
2314
+ var props = {input: 'checked', option: 'selected', textarea: 'value'};
2315
+
2316
+ var get = function(uid){
2317
+ return (storage[uid] || (storage[uid] = {}));
2318
+ };
2319
+
2320
+ var clean = function(item){
2321
+ if (item.removeEvents) item.removeEvents();
2322
+ if (item.clearAttributes) item.clearAttributes();
2323
+ var uid = item.uid;
2324
+ if (uid != null){
2325
+ delete collected[uid];
2326
+ delete storage[uid];
2327
+ }
2328
+ return item;
2329
+ };
2330
+
2331
+ var camels = ['defaultValue', 'accessKey', 'cellPadding', 'cellSpacing', 'colSpan', 'frameBorder', 'maxLength', 'readOnly',
2332
+ 'rowSpan', 'tabIndex', 'useMap'
2333
+ ];
2334
+ var bools = ['compact', 'nowrap', 'ismap', 'declare', 'noshade', 'checked', 'disabled', 'readOnly', 'multiple', 'selected',
2335
+ 'noresize', 'defer'
2336
+ ];
2337
+ var attributes = {
2338
+ 'html': 'innerHTML',
2339
+ 'class': 'className',
2340
+ 'for': 'htmlFor',
2341
+ 'text': (function(){
2342
+ var temp = document.createElement('div');
2343
+ return (temp.innerText == null) ? 'textContent' : 'innerText';
2344
+ })()
2345
+ };
2346
+ var readOnly = ['type'];
2347
+ var expandos = ['value', 'defaultValue'];
2348
+ var uriAttrs = /^href|src|usemap$/i;
2349
+
2350
+ bools = bools.associate(bools);
2351
+ camels = camels.associate(camels.map(String.toLowerCase));
2352
+ readOnly = readOnly.associate(readOnly);
2353
+
2354
+ Object.append(attributes, expandos.associate(expandos));
2355
+
2356
+ var inserters = {
2357
+
2358
+ before: function(context, element){
2359
+ var parent = element.parentNode;
2360
+ if (parent) parent.insertBefore(context, element);
2361
+ },
2362
+
2363
+ after: function(context, element){
2364
+ var parent = element.parentNode;
2365
+ if (parent) parent.insertBefore(context, element.nextSibling);
2366
+ },
2367
+
2368
+ bottom: function(context, element){
2369
+ element.appendChild(context);
2370
+ },
2371
+
2372
+ top: function(context, element){
2373
+ element.insertBefore(context, element.firstChild);
2374
+ }
2375
+
2376
+ };
2377
+
2378
+ inserters.inside = inserters.bottom;
2379
+
2380
+
2381
+
2382
+ var injectCombinator = function(expression, combinator){
2383
+ if (!expression) return combinator;
2384
+
2385
+ expression = Slick.parse(expression);
2386
+
2387
+ var expressions = expression.expressions;
2388
+ for (var i = expressions.length; i--;)
2389
+ expressions[i][0].combinator = combinator;
2390
+
2391
+ return expression;
2392
+ };
2393
+
2394
+ Element.implement({
2395
+
2396
+ set: function(prop, value){
2397
+ var property = Element.Properties[prop];
2398
+ (property && property.set) ? property.set.call(this, value) : this.setProperty(prop, value);
2399
+ }.overloadSetter(),
2400
+
2401
+ get: function(prop){
2402
+ var property = Element.Properties[prop];
2403
+ return (property && property.get) ? property.get.apply(this) : this.getProperty(prop);
2404
+ }.overloadGetter(),
2405
+
2406
+ erase: function(prop){
2407
+ var property = Element.Properties[prop];
2408
+ (property && property.erase) ? property.erase.apply(this) : this.removeProperty(prop);
2409
+ return this;
2410
+ },
2411
+
2412
+ setProperty: function(attribute, value){
2413
+ attribute = camels[attribute] || attribute;
2414
+ if (value == null) return this.removeProperty(attribute);
2415
+ var key = attributes[attribute];
2416
+ (key) ? this[key] = value :
2417
+ (bools[attribute]) ? this[attribute] = !!value : this.setAttribute(attribute, '' + value);
2418
+ return this;
2419
+ },
2420
+
2421
+ setProperties: function(attributes){
2422
+ for (var attribute in attributes) this.setProperty(attribute, attributes[attribute]);
2423
+ return this;
2424
+ },
2425
+
2426
+ getProperty: function(attribute){
2427
+ attribute = camels[attribute] || attribute;
2428
+ var key = attributes[attribute] || readOnly[attribute];
2429
+ return (key) ? this[key] :
2430
+ (bools[attribute]) ? !!this[attribute] :
2431
+ (uriAttrs.test(attribute) ? this.getAttribute(attribute, 2) :
2432
+ (key = this.getAttributeNode(attribute)) ? key.nodeValue : null) || null;
2433
+ },
2434
+
2435
+ getProperties: function(){
2436
+ var args = Array.from(arguments);
2437
+ return args.map(this.getProperty, this).associate(args);
2438
+ },
2439
+
2440
+ removeProperty: function(attribute){
2441
+ attribute = camels[attribute] || attribute;
2442
+ var key = attributes[attribute];
2443
+ (key) ? this[key] = '' :
2444
+ (bools[attribute]) ? this[attribute] = false : this.removeAttribute(attribute);
2445
+ return this;
2446
+ },
2447
+
2448
+ removeProperties: function(){
2449
+ Array.each(arguments, this.removeProperty, this);
2450
+ return this;
2451
+ },
2452
+
2453
+ hasClass: function(className){
2454
+ return this.className.contains(className, ' ');
2455
+ },
2456
+
2457
+ addClass: function(className){
2458
+ if (!this.hasClass(className)) this.className = (this.className + ' ' + className).clean();
2459
+ return this;
2460
+ },
2461
+
2462
+ removeClass: function(className){
2463
+ this.className = this.className.replace(new RegExp('(^|\\s)' + className + '(?:\\s|$)'), '$1');
2464
+ return this;
2465
+ },
2466
+
2467
+ toggleClass: function(className, force){
2468
+ if (force == null) force = !this.hasClass(className);
2469
+ return (force) ? this.addClass(className) : this.removeClass(className);
2470
+ },
2471
+
2472
+ adopt: function(){
2473
+ var parent = this, fragment, elements = Array.flatten(arguments), length = elements.length;
2474
+ if (length > 1) parent = fragment = document.createDocumentFragment();
2475
+
2476
+ for (var i = 0; i < length; i++){
2477
+ var element = document.id(elements[i], true);
2478
+ if (element) parent.appendChild(element);
2479
+ }
2480
+
2481
+ if (fragment) this.appendChild(fragment);
2482
+
2483
+ return this;
2484
+ },
2485
+
2486
+ appendText: function(text, where){
2487
+ return this.grab(this.getDocument().newTextNode(text), where);
2488
+ },
2489
+
2490
+ grab: function(el, where){
2491
+ inserters[where || 'bottom'](document.id(el, true), this);
2492
+ return this;
2493
+ },
2494
+
2495
+ inject: function(el, where){
2496
+ inserters[where || 'bottom'](this, document.id(el, true));
2497
+ return this;
2498
+ },
2499
+
2500
+ replaces: function(el){
2501
+ el = document.id(el, true);
2502
+ el.parentNode.replaceChild(this, el);
2503
+ return this;
2504
+ },
2505
+
2506
+ wraps: function(el, where){
2507
+ el = document.id(el, true);
2508
+ return this.replaces(el).grab(el, where);
2509
+ },
2510
+
2511
+ getPrevious: function(expression){
2512
+ return document.id(Slick.find(this, injectCombinator(expression, '!~')));
2513
+ },
2514
+
2515
+ getAllPrevious: function(expression){
2516
+ return Slick.search(this, injectCombinator(expression, '!~'), new Elements);
2517
+ },
2518
+
2519
+ getNext: function(expression){
2520
+ return document.id(Slick.find(this, injectCombinator(expression, '~')));
2521
+ },
2522
+
2523
+ getAllNext: function(expression){
2524
+ return Slick.search(this, injectCombinator(expression, '~'), new Elements);
2525
+ },
2526
+
2527
+ getFirst: function(expression){
2528
+ return document.id(Slick.find(this, injectCombinator(expression, '>')));
2529
+ },
2530
+
2531
+ getLast: function(expression){
2532
+ return document.id(Slick.find(this, injectCombinator(expression, '!^')));
2533
+ },
2534
+
2535
+ getParent: function(expression){
2536
+ return document.id(Slick.find(this, injectCombinator(expression, '!')));
2537
+ },
2538
+
2539
+ getParents: function(expression){
2540
+ return Slick.search(this, injectCombinator(expression, '!'), new Elements);
2541
+ },
2542
+
2543
+ getSiblings: function(expression){
2544
+ return Slick.search(this, injectCombinator(expression, '~~'), new Elements);
2545
+ },
2546
+
2547
+ getChildren: function(expression){
2548
+ return Slick.search(this, injectCombinator(expression, '>'), new Elements);
2549
+ },
2550
+
2551
+ getWindow: function(){
2552
+ return this.ownerDocument.window;
2553
+ },
2554
+
2555
+ getDocument: function(){
2556
+ return this.ownerDocument;
2557
+ },
2558
+
2559
+ getElementById: function(id){
2560
+ return document.id(Slick.find(this, '#' + id));
2561
+ },
2562
+
2563
+ getSelected: function(){
2564
+ this.selectedIndex; // Safari 3.2.1
2565
+ return new Elements(Array.from(this.options).filter(function(option){
2566
+ return option.selected;
2567
+ }));
2568
+ },
2569
+
2570
+ toQueryString: function(){
2571
+ var queryString = [];
2572
+ this.getElements('input, select, textarea').each(function(el){
2573
+ var type = el.type;
2574
+ if (!el.name || el.disabled || type == 'submit' || type == 'reset' || type == 'file' || type == 'image') return;
2575
+
2576
+ var value = (el.get('tag') == 'select') ? el.getSelected().map(function(opt){
2577
+ // IE
2578
+ return document.id(opt).get('value');
2579
+ }) : ((type == 'radio' || type == 'checkbox') && !el.checked) ? null : el.get('value');
2580
+
2581
+ Array.from(value).each(function(val){
2582
+ if (typeof val != 'undefined') queryString.push(encodeURIComponent(el.name) + '=' + encodeURIComponent(val));
2583
+ });
2584
+ });
2585
+ return queryString.join('&');
2586
+ },
2587
+
2588
+ clone: function(contents, keepid){
2589
+ contents = contents !== false;
2590
+ var clone = this.cloneNode(contents);
2591
+ var clean = function(node, element){
2592
+ if (!keepid) node.removeAttribute('id');
2593
+ if (Browser.ie){
2594
+ node.clearAttributes();
2595
+ node.mergeAttributes(element);
2596
+ node.removeAttribute('uid');
2597
+ if (node.options){
2598
+ var no = node.options, eo = element.options;
2599
+ for (var j = no.length; j--;) no[j].selected = eo[j].selected;
2600
+ }
2601
+ }
2602
+ var prop = props[element.tagName.toLowerCase()];
2603
+ if (prop && element[prop]) node[prop] = element[prop];
2604
+ };
2605
+
2606
+ if (contents){
2607
+ var ce = clone.getElementsByTagName('*'), te = this.getElementsByTagName('*');
2608
+ for (var i = ce.length; i--;) clean(ce[i], te[i]);
2609
+ }
2610
+
2611
+ clean(clone, this);
2612
+ return document.id(clone);
2613
+ },
2614
+
2615
+ destroy: function(){
2616
+ var children = clean(this).getElementsByTagName('*');
2617
+ Array.each(children, clean);
2618
+ Element.dispose(this);
2619
+ return null;
2620
+ },
2621
+
2622
+ empty: function(){
2623
+ Array.from(this.childNodes).each(Element.dispose);
2624
+ return this;
2625
+ },
2626
+
2627
+ dispose: function(){
2628
+ return (this.parentNode) ? this.parentNode.removeChild(this) : this;
2629
+ },
2630
+
2631
+ match: function(expression){
2632
+ return !expression || Slick.match(this, expression);
2633
+ }
2634
+
2635
+ });
2636
+
2637
+ var contains = {contains: function(element){
2638
+ return Slick.contains(this, element);
2639
+ }};
2640
+
2641
+ if (!document.contains) Document.implement(contains);
2642
+ if (!document.createElement('div').contains) Element.implement(contains);
2643
+
2644
+
2645
+
2646
+ [Element, Window, Document].invoke('implement', {
2647
+
2648
+ addListener: function(type, fn){
2649
+ if (type == 'unload'){
2650
+ var old = fn, self = this;
2651
+ fn = function(){
2652
+ self.removeListener('unload', fn);
2653
+ old();
2654
+ };
2655
+ } else {
2656
+ collected[this.uid] = this;
2657
+ }
2658
+ if (this.addEventListener) this.addEventListener(type, fn, false);
2659
+ else this.attachEvent('on' + type, fn);
2660
+ return this;
2661
+ },
2662
+
2663
+ removeListener: function(type, fn){
2664
+ if (this.removeEventListener) this.removeEventListener(type, fn, false);
2665
+ else this.detachEvent('on' + type, fn);
2666
+ return this;
2667
+ },
2668
+
2669
+ retrieve: function(property, dflt){
2670
+ var storage = get(this.uid), prop = storage[property];
2671
+ if (dflt != null && prop == null) prop = storage[property] = dflt;
2672
+ return prop != null ? prop : null;
2673
+ },
2674
+
2675
+ store: function(property, value){
2676
+ var storage = get(this.uid);
2677
+ storage[property] = value;
2678
+ return this;
2679
+ },
2680
+
2681
+ eliminate: function(property){
2682
+ var storage = get(this.uid);
2683
+ delete storage[property];
2684
+ return this;
2685
+ }
2686
+
2687
+ });
2688
+
2689
+ // IE purge
2690
+ if (window.attachEvent && !window.addEventListener) window.addListener('unload', function(){
2691
+ Object.each(collected, clean);
2692
+ if (window.CollectGarbage) CollectGarbage();
2693
+ });
2694
+
2695
+ })();
2696
+
2697
+ Element.Properties = {};
2698
+
2699
+
2700
+
2701
+ Element.Properties.style = {
2702
+
2703
+ set: function(style){
2704
+ this.style.cssText = style;
2705
+ },
2706
+
2707
+ get: function(){
2708
+ return this.style.cssText;
2709
+ },
2710
+
2711
+ erase: function(){
2712
+ this.style.cssText = '';
2713
+ }
2714
+
2715
+ };
2716
+
2717
+ Element.Properties.tag = {
2718
+
2719
+ get: function(){
2720
+ return this.tagName.toLowerCase();
2721
+ }
2722
+
2723
+ };
2724
+
2725
+ (function(maxLength){
2726
+ if (maxLength != null) Element.Properties.maxlength = Element.Properties.maxLength = {
2727
+ get: function(){
2728
+ var maxlength = this.getAttribute('maxLength');
2729
+ return maxlength == maxLength ? null : maxlength;
2730
+ }
2731
+ };
2732
+ })(document.createElement('input').getAttribute('maxLength'));
2733
+
2734
+ Element.Properties.html = (function(){
2735
+
2736
+ var tableTest = Function.attempt(function(){
2737
+ var table = document.createElement('table');
2738
+ table.innerHTML = '<tr><td></td></tr>';
2739
+ });
2740
+
2741
+ var wrapper = document.createElement('div');
2742
+
2743
+ var translations = {
2744
+ table: [1, '<table>', '</table>'],
2745
+ select: [1, '<select>', '</select>'],
2746
+ tbody: [2, '<table><tbody>', '</tbody></table>'],
2747
+ tr: [3, '<table><tbody><tr>', '</tr></tbody></table>']
2748
+ };
2749
+ translations.thead = translations.tfoot = translations.tbody;
2750
+
2751
+ var html = {
2752
+ set: function(){
2753
+ var html = Array.flatten(arguments).join('');
2754
+ var wrap = (!tableTest && translations[this.get('tag')]);
2755
+ if (wrap){
2756
+ var first = wrapper;
2757
+ first.innerHTML = wrap[1] + html + wrap[2];
2758
+ for (var i = wrap[0]; i--;) first = first.firstChild;
2759
+ this.empty().adopt(first.childNodes);
2760
+ } else {
2761
+ this.innerHTML = html;
2762
+ }
2763
+ }
2764
+ };
2765
+
2766
+ html.erase = html.set;
2767
+
2768
+ return html;
2769
+ })();
2770
+
2771
+
2772
+ /*
2773
+ ---
2774
+
2775
+ name: Object
2776
+
2777
+ description: Object generic methods
2778
+
2779
+ license: MIT-style license.
2780
+
2781
+ requires: Type
2782
+
2783
+ provides: [Object, Hash]
2784
+
2785
+ ...
2786
+ */
2787
+
2788
+
2789
+ Object.extend({
2790
+
2791
+ subset: function(object, keys){
2792
+ var results = {};
2793
+ for (var i = 0, l = keys.length; i < l; i++){
2794
+ var k = keys[i];
2795
+ results[k] = object[k];
2796
+ }
2797
+ return results;
2798
+ },
2799
+
2800
+ map: function(object, fn, bind){
2801
+ var results = {};
2802
+ for (var key in object){
2803
+ if (object.hasOwnProperty(key)) results[key] = fn.call(bind, object[key], key, object);
2804
+ }
2805
+ return results;
2806
+ },
2807
+
2808
+ filter: function(object, fn, bind){
2809
+ var results = {};
2810
+ Object.each(object, function(value, key){
2811
+ if (fn.call(bind, value, key, object)) results[key] = value;
2812
+ });
2813
+ return results;
2814
+ },
2815
+
2816
+ every: function(object, fn, bind){
2817
+ for (var key in object){
2818
+ if (object.hasOwnProperty(key) && !fn.call(bind, object[key], key)) return false;
2819
+ }
2820
+ return true;
2821
+ },
2822
+
2823
+ some: function(object, fn, bind){
2824
+ for (var key in object){
2825
+ if (object.hasOwnProperty(key) && fn.call(bind, object[key], key)) return true;
2826
+ }
2827
+ return false;
2828
+ },
2829
+
2830
+ keys: function(object){
2831
+ var keys = [];
2832
+ for (var key in object){
2833
+ if (object.hasOwnProperty(key)) keys.push(key);
2834
+ }
2835
+ return keys;
2836
+ },
2837
+
2838
+ values: function(object){
2839
+ var values = [];
2840
+ for (var key in object){
2841
+ if (object.hasOwnProperty(key)) values.push(object[key]);
2842
+ }
2843
+ return values;
2844
+ },
2845
+
2846
+ getLength: function(object){
2847
+ return Object.keys(object).length;
2848
+ },
2849
+
2850
+ keyOf: function(object, value){
2851
+ for (var key in object){
2852
+ if (object.hasOwnProperty(key) && object[key] === value) return key;
2853
+ }
2854
+ return null;
2855
+ },
2856
+
2857
+ contains: function(object, value){
2858
+ return Object.keyOf(object, value) != null;
2859
+ },
2860
+
2861
+ toQueryString: function(object, base){
2862
+ var queryString = [];
2863
+
2864
+ Object.each(object, function(value, key){
2865
+ if (base) key = base + '[' + key + ']';
2866
+ var result;
2867
+ switch (typeOf(value)){
2868
+ case 'object': result = Object.toQueryString(value, key); break;
2869
+ case 'array':
2870
+ var qs = {};
2871
+ value.each(function(val, i){
2872
+ qs[i] = val;
2873
+ });
2874
+ result = Object.toQueryString(qs, key);
2875
+ break;
2876
+ default: result = key + '=' + encodeURIComponent(value);
2877
+ }
2878
+ if (value != undefined) queryString.push(result);
2879
+ });
2880
+
2881
+ return queryString.join('&');
2882
+ }
2883
+
2884
+ });
2885
+
2886
+
2887
+
2888
+
2889
+
2890
+ /*
2891
+ ---
2892
+
2893
+ name: Event
2894
+
2895
+ description: Contains the Event Class, to make the event object cross-browser.
2896
+
2897
+ license: MIT-style license.
2898
+
2899
+ requires: [Window, Document, Array, Function, String, Object]
2900
+
2901
+ provides: Event
2902
+
2903
+ ...
2904
+ */
2905
+
2906
+ var Event = new Type('Event', function(event, win){
2907
+ if (!win) win = window;
2908
+ var doc = win.document;
2909
+ event = event || win.event;
2910
+ if (event.$extended) return event;
2911
+ this.$extended = true;
2912
+ var type = event.type,
2913
+ target = event.target || event.srcElement,
2914
+ page = {},
2915
+ client = {};
2916
+ while (target && target.nodeType == 3) target = target.parentNode;
2917
+
2918
+ if (type.test(/key/)){
2919
+ var code = event.which || event.keyCode;
2920
+ var key = Object.keyOf(Event.Keys, code);
2921
+ if (type == 'keydown'){
2922
+ var fKey = code - 111;
2923
+ if (fKey > 0 && fKey < 13) key = 'f' + fKey;
2924
+ }
2925
+ if (!key) key = String.fromCharCode(code).toLowerCase();
2926
+ } else if (type.test(/click|mouse|menu/i)){
2927
+ doc = (!doc.compatMode || doc.compatMode == 'CSS1Compat') ? doc.html : doc.body;
2928
+ page = {
2929
+ x: (event.pageX != null) ? event.pageX : event.clientX + doc.scrollLeft,
2930
+ y: (event.pageY != null) ? event.pageY : event.clientY + doc.scrollTop
2931
+ };
2932
+ client = {
2933
+ x: (event.pageX != null) ? event.pageX - win.pageXOffset : event.clientX,
2934
+ y: (event.pageY != null) ? event.pageY - win.pageYOffset : event.clientY
2935
+ };
2936
+ if (type.test(/DOMMouseScroll|mousewheel/)){
2937
+ var wheel = (event.wheelDelta) ? event.wheelDelta / 120 : -(event.detail || 0) / 3;
2938
+ }
2939
+ var rightClick = (event.which == 3) || (event.button == 2),
2940
+ related = null;
2941
+ if (type.test(/over|out/)){
2942
+ related = event.relatedTarget || event[(type == 'mouseover' ? 'from' : 'to') + 'Element'];
2943
+ var testRelated = function(){
2944
+ while (related && related.nodeType == 3) related = related.parentNode;
2945
+ return true;
2946
+ };
2947
+ var hasRelated = (Browser.firefox2) ? testRelated.attempt() : testRelated();
2948
+ related = (hasRelated) ? related : null;
2949
+ }
2950
+ } else if (type.test(/gesture|touch/i)){
2951
+ this.rotation = event.rotation;
2952
+ this.scale = event.scale;
2953
+ this.touches = event.touches;
2954
+ this.targetTouches = event.targetTouches;
2955
+ this.changedTouches = event.changedTouches;
2956
+ }
2957
+
2958
+ return Object.append(this, {
2959
+ event: event,
2960
+ type: type,
2961
+
2962
+ page: page,
2963
+ client: client,
2964
+ rightClick: rightClick,
2965
+
2966
+ wheel: wheel,
2967
+
2968
+ relatedTarget: document.id(related),
2969
+ target: document.id(target),
2970
+
2971
+ code: code,
2972
+ key: key,
2973
+
2974
+ shift: event.shiftKey,
2975
+ control: event.ctrlKey,
2976
+ alt: event.altKey,
2977
+ meta: event.metaKey
2978
+ });
2979
+ });
2980
+
2981
+ Event.Keys = {
2982
+ 'enter': 13,
2983
+ 'up': 38,
2984
+ 'down': 40,
2985
+ 'left': 37,
2986
+ 'right': 39,
2987
+ 'esc': 27,
2988
+ 'space': 32,
2989
+ 'backspace': 8,
2990
+ 'tab': 9,
2991
+ 'delete': 46
2992
+ };
2993
+
2994
+
2995
+
2996
+ Event.implement({
2997
+
2998
+ stop: function(){
2999
+ return this.stopPropagation().preventDefault();
3000
+ },
3001
+
3002
+ stopPropagation: function(){
3003
+ if (this.event.stopPropagation) this.event.stopPropagation();
3004
+ else this.event.cancelBubble = true;
3005
+ return this;
3006
+ },
3007
+
3008
+ preventDefault: function(){
3009
+ if (this.event.preventDefault) this.event.preventDefault();
3010
+ else this.event.returnValue = false;
3011
+ return this;
3012
+ }
3013
+
3014
+ });
3015
+
3016
+
3017
+ /*
3018
+ ---
3019
+
3020
+ name: Element.Event
3021
+
3022
+ description: Contains Element methods for dealing with events. This file also includes mouseenter and mouseleave custom Element Events.
3023
+
3024
+ license: MIT-style license.
3025
+
3026
+ requires: [Element, Event]
3027
+
3028
+ provides: Element.Event
3029
+
3030
+ ...
3031
+ */
3032
+
3033
+ (function(){
3034
+
3035
+ Element.Properties.events = {set: function(events){
3036
+ this.addEvents(events);
3037
+ }};
3038
+
3039
+ [Element, Window, Document].invoke('implement', {
3040
+
3041
+ addEvent: function(type, fn){
3042
+ var events = this.retrieve('events', {});
3043
+ if (!events[type]) events[type] = {keys: [], values: []};
3044
+ if (events[type].keys.contains(fn)) return this;
3045
+ events[type].keys.push(fn);
3046
+ var realType = type,
3047
+ custom = Element.Events[type],
3048
+ condition = fn,
3049
+ self = this;
3050
+ if (custom){
3051
+ if (custom.onAdd) custom.onAdd.call(this, fn);
3052
+ if (custom.condition){
3053
+ condition = function(event){
3054
+ if (custom.condition.call(this, event)) return fn.call(this, event);
3055
+ return true;
3056
+ };
3057
+ }
3058
+ realType = custom.base || realType;
3059
+ }
3060
+ var defn = function(){
3061
+ return fn.call(self);
3062
+ };
3063
+ var nativeEvent = Element.NativeEvents[realType];
3064
+ if (nativeEvent){
3065
+ if (nativeEvent == 2){
3066
+ defn = function(event){
3067
+ event = new Event(event, self.getWindow());
3068
+ if (condition.call(self, event) === false) event.stop();
3069
+ };
3070
+ }
3071
+ this.addListener(realType, defn);
3072
+ }
3073
+ events[type].values.push(defn);
3074
+ return this;
3075
+ },
3076
+
3077
+ removeEvent: function(type, fn){
3078
+ var events = this.retrieve('events');
3079
+ if (!events || !events[type]) return this;
3080
+ var index = events[type].keys.indexOf(fn);
3081
+ if (index == -1) return this;
3082
+ events[type].keys.splice(index, 1);
3083
+ var value = events[type].values.splice(index, 1)[0];
3084
+ var custom = Element.Events[type];
3085
+ if (custom){
3086
+ if (custom.onRemove) custom.onRemove.call(this, fn);
3087
+ type = custom.base || type;
3088
+ }
3089
+ return (Element.NativeEvents[type]) ? this.removeListener(type, value) : this;
3090
+ },
3091
+
3092
+ addEvents: function(events){
3093
+ for (var event in events) this.addEvent(event, events[event]);
3094
+ return this;
3095
+ },
3096
+
3097
+ removeEvents: function(events){
3098
+ var type;
3099
+ if (typeOf(events) == 'object'){
3100
+ for (type in events) this.removeEvent(type, events[type]);
3101
+ return this;
3102
+ }
3103
+ var attached = this.retrieve('events');
3104
+ if (!attached) return this;
3105
+ if (!events){
3106
+ for (type in attached) this.removeEvents(type);
3107
+ this.eliminate('events');
3108
+ } else if (attached[events]){
3109
+ while (attached[events].keys[0]) this.removeEvent(events, attached[events].keys[0]);
3110
+ delete attached[events];
3111
+ }
3112
+ return this;
3113
+ },
3114
+
3115
+ fireEvent: function(type, args, delay){
3116
+ var events = this.retrieve('events');
3117
+ if (!events || !events[type]) return this;
3118
+ args = Array.from(args);
3119
+ events[type].keys.each(function(fn){
3120
+ if (delay) fn.delay(delay, this, args);
3121
+ else fn.apply(this, args);
3122
+ }, this);
3123
+ return this;
3124
+ },
3125
+
3126
+ cloneEvents: function(from, type){
3127
+ from = document.id(from);
3128
+ var events = from.retrieve('events');
3129
+ if (!events) return this;
3130
+ if (!type){
3131
+ for (var eventType in events) this.cloneEvents(from, eventType);
3132
+ } else if (events[type]){
3133
+ events[type].keys.each(function(fn){
3134
+ this.addEvent(type, fn);
3135
+ }, this);
3136
+ }
3137
+ return this;
3138
+ }
3139
+
3140
+ });
3141
+
3142
+ Element.NativeEvents = {
3143
+ click: 2, dblclick: 2, mouseup: 2, mousedown: 2, contextmenu: 2, //mouse buttons
3144
+ mousewheel: 2, DOMMouseScroll: 2, //mouse wheel
3145
+ mouseover: 2, mouseout: 2, mousemove: 2, selectstart: 2, selectend: 2, //mouse movement
3146
+ keydown: 2, keypress: 2, keyup: 2, //keyboard
3147
+ orientationchange: 2, // mobile
3148
+ touchstart: 2, touchmove: 2, touchend: 2, touchcancel: 2, // touch
3149
+ gesturestart: 2, gesturechange: 2, gestureend: 2, // gesture
3150
+ focus: 2, blur: 2, change: 2, reset: 2, select: 2, submit: 2, //form elements
3151
+ load: 2, unload: 1, beforeunload: 2, resize: 1, move: 1, DOMContentLoaded: 1, readystatechange: 1, //window
3152
+ error: 1, abort: 1, scroll: 1 //misc
3153
+ };
3154
+
3155
+ var check = function(event){
3156
+ var related = event.relatedTarget;
3157
+ if (related == null) return true;
3158
+ if (!related) return false;
3159
+ return (related != this && related.prefix != 'xul' && typeOf(this) != 'document' && !this.contains(related));
3160
+ };
3161
+
3162
+ Element.Events = {
3163
+
3164
+ mouseenter: {
3165
+ base: 'mouseover',
3166
+ condition: check
3167
+ },
3168
+
3169
+ mouseleave: {
3170
+ base: 'mouseout',
3171
+ condition: check
3172
+ },
3173
+
3174
+ mousewheel: {
3175
+ base: (Browser.firefox) ? 'DOMMouseScroll' : 'mousewheel'
3176
+ }
3177
+
3178
+ };
3179
+
3180
+
3181
+
3182
+ })();
3183
+