closure 1.2.701 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1566) hide show
  1. data/README.md +9 -8
  2. data/closure-compiler/README +1 -1
  3. data/closure-compiler/compiler.jar +0 -0
  4. data/docs/SCRIPT.md +142 -0
  5. data/docs/closure/Closure/BeanShell.html +335 -0
  6. data/docs/closure/Closure/Compiler/Compilation.html +636 -0
  7. data/docs/closure/Closure/Compiler/Error.html +116 -0
  8. data/docs/closure/Closure/Compiler.html +387 -0
  9. data/docs/closure/Closure/FileResponse.html +622 -0
  10. data/docs/closure/Closure/Goog.html +1251 -0
  11. data/docs/closure/Closure/Middleware.html +304 -0
  12. data/docs/closure/Closure/Script/NotFound.html +116 -0
  13. data/docs/closure/Closure/Script/RenderStackOverflow.html +116 -0
  14. data/docs/closure/Closure/Script.html +1083 -0
  15. data/docs/closure/Closure/Server.html +439 -0
  16. data/docs/closure/Closure/ShowExceptions.html +266 -0
  17. data/docs/closure/Closure/Sources.html +1272 -0
  18. data/docs/closure/Closure/Templates/Error.html +116 -0
  19. data/docs/closure/Closure/Templates.html +361 -0
  20. data/docs/closure/Closure.html +715 -0
  21. data/docs/closure/_index.html +289 -0
  22. data/docs/closure/class_list.html +47 -0
  23. data/docs/closure/css/common.css +1 -0
  24. data/docs/closure/css/full_list.css +53 -0
  25. data/docs/closure/css/style.css +320 -0
  26. data/{closure-library/LICENSE → docs/closure/file.LICENSE.html} +106 -16
  27. data/docs/closure/file.README.html +79 -0
  28. data/docs/closure/file_list.html +52 -0
  29. data/docs/closure/frames.html +13 -0
  30. data/docs/closure/index.html +79 -0
  31. data/docs/closure/js/app.js +205 -0
  32. data/docs/closure/js/full_list.js +150 -0
  33. data/docs/closure/js/jquery.js +16 -0
  34. data/docs/closure/method_list.html +486 -0
  35. data/docs/closure/top-level-namespace.html +103 -0
  36. data/docs/index.erb +26 -0
  37. data/externs/chrome_extensions.externs +968 -0
  38. data/{scripts/externs/jquery_1_4_2.externs → externs/jquery-1.3.2.externs} +39 -170
  39. data/externs/jquery-1.4.3.externs +1289 -0
  40. data/externs/jquery-1.4.4.externs +1302 -0
  41. data/externs/jquery-1.5.externs +1697 -0
  42. data/externs/jquery.externs +4 -0
  43. data/lib/closure/beanshell.rb +9 -21
  44. data/lib/closure/compiler.rb +247 -102
  45. data/lib/closure/engines.rb +50 -0
  46. data/lib/closure/goog.rb +122 -68
  47. data/lib/closure/script.rb +68 -54
  48. data/lib/closure/server.rb +10 -1
  49. data/lib/closure/show_exceptions.rb +30 -3
  50. data/lib/closure/sources.rb +26 -25
  51. data/lib/closure/templates.rb +79 -124
  52. data/lib/closure/version.rb +1 -1
  53. data/lib/closure.rb +64 -43
  54. data/lib/shim.jar +0 -0
  55. data/scripts/config.ru +25 -0
  56. data/scripts/hello/compiler.js.erb +48 -0
  57. data/scripts/hello/compiler_build.js +5 -0
  58. data/scripts/hello/compiler_build.map +752 -0
  59. data/scripts/hello/compiler_debug.js +125 -0
  60. data/scripts/hello/hello.js +11 -0
  61. data/scripts/hello/index.erb +11 -0
  62. data/scripts/hello/legume.js +20 -0
  63. data/scripts/hello/legume.soy +9 -0
  64. data/scripts/index.erb +45 -5
  65. data/scripts/jquery/compiler.js.erb +7 -0
  66. data/scripts/jquery/compiler_out.js +1 -0
  67. data/scripts/jquery/index.erb +25 -0
  68. data/scripts/jquery/jquery_test.js +8 -0
  69. data/scripts/modules/api.js +11 -0
  70. data/scripts/modules/api_init.js +8 -0
  71. data/scripts/modules/app.js +102 -0
  72. data/scripts/modules/app_init.js +33 -0
  73. data/scripts/modules/compiler.js.erb +34 -0
  74. data/scripts/modules/compiler_build.js +6 -0
  75. data/scripts/modules/compiler_build.map +12077 -0
  76. data/scripts/modules/compiler_build_api.js +1 -0
  77. data/scripts/modules/compiler_build_app.js +74 -0
  78. data/scripts/modules/compiler_build_settings.js +2 -0
  79. data/scripts/modules/compiler_debug.js +6 -0
  80. data/scripts/modules/compiler_debug_api.js +11 -0
  81. data/scripts/modules/compiler_debug_app.js +2870 -0
  82. data/scripts/modules/compiler_debug_settings.js +42 -0
  83. data/scripts/modules/index.erb +18 -0
  84. data/scripts/modules/settings.js +19 -0
  85. data/scripts/modules/settings_init.js +14 -0
  86. data/scripts/{demos/rails_ujs.erb → rails/index.erb} +14 -6
  87. data/scripts/{demos → rails}/rails_ujs.js +0 -40
  88. data/scripts/svn.erb +228 -0
  89. data/scripts/welcome.erb +78 -0
  90. metadata +101 -1507
  91. data/.gitignore +0 -6
  92. data/.yardopts +0 -3
  93. data/closure-library/AUTHORS +0 -12
  94. data/closure-library/README +0 -6
  95. data/closure-library/all_tests.html +0 -113
  96. data/closure-library/alltests.js +0 -16
  97. data/closure-library/closure/bin/build/closurebuilder.py +0 -257
  98. data/closure-library/closure/bin/build/depstree.py +0 -186
  99. data/closure-library/closure/bin/build/depstree_test.py +0 -127
  100. data/closure-library/closure/bin/build/depswriter.py +0 -197
  101. data/closure-library/closure/bin/build/jscompiler.py +0 -69
  102. data/closure-library/closure/bin/build/source.py +0 -86
  103. data/closure-library/closure/bin/build/source_test.py +0 -57
  104. data/closure-library/closure/bin/build/treescan.py +0 -78
  105. data/closure-library/closure/bin/calcdeps.py +0 -570
  106. data/closure-library/closure/bin/scopify.py +0 -211
  107. data/closure-library/closure/css/inlay/g-base.css +0 -82
  108. data/closure-library/closure/css/inlay/g-fixed.css +0 -158
  109. data/closure-library/closure/css/inlay/g-ratio.css +0 -253
  110. data/closure-library/closure/goog/array/array.js +0 -1300
  111. data/closure-library/closure/goog/array/array_test.html +0 -1524
  112. data/closure-library/closure/goog/asserts/asserts.js +0 -277
  113. data/closure-library/closure/goog/asserts/asserts_test.html +0 -163
  114. data/closure-library/closure/goog/async/conditionaldelay.js +0 -238
  115. data/closure-library/closure/goog/async/conditionaldelay_test.html +0 -227
  116. data/closure-library/closure/goog/async/delay.js +0 -174
  117. data/closure-library/closure/goog/async/delay_test.html +0 -148
  118. data/closure-library/closure/goog/async/throttle.js +0 -189
  119. data/closure-library/closure/goog/async/throttle_test.html +0 -102
  120. data/closure-library/closure/goog/base.js +0 -1471
  121. data/closure-library/closure/goog/base_test.html +0 -1166
  122. data/closure-library/closure/goog/bootstrap/webworkers.js +0 -37
  123. data/closure-library/closure/goog/color/alpha.js +0 -436
  124. data/closure-library/closure/goog/color/alpha_test.html +0 -234
  125. data/closure-library/closure/goog/color/color.js +0 -757
  126. data/closure-library/closure/goog/color/color_test.html +0 -645
  127. data/closure-library/closure/goog/color/names.js +0 -176
  128. data/closure-library/closure/goog/crypt/arc4.js +0 -141
  129. data/closure-library/closure/goog/crypt/arc4_test.html +0 -42
  130. data/closure-library/closure/goog/crypt/base64.js +0 -267
  131. data/closure-library/closure/goog/crypt/base64_test.html +0 -106
  132. data/closure-library/closure/goog/crypt/basen.js +0 -242
  133. data/closure-library/closure/goog/crypt/basen_test.html +0 -167
  134. data/closure-library/closure/goog/crypt/crypt.js +0 -103
  135. data/closure-library/closure/goog/crypt/crypt_test.html +0 -68
  136. data/closure-library/closure/goog/crypt/hash32.js +0 -184
  137. data/closure-library/closure/goog/crypt/hash32_test.html +0 -287
  138. data/closure-library/closure/goog/crypt/sha1.js +0 -238
  139. data/closure-library/closure/goog/crypt/sha1_test.html +0 -47
  140. data/closure-library/closure/goog/css/autocomplete.css +0 -43
  141. data/closure-library/closure/goog/css/bubble.css +0 -84
  142. data/closure-library/closure/goog/css/button.css +0 -38
  143. data/closure-library/closure/goog/css/charpicker.css +0 -201
  144. data/closure-library/closure/goog/css/checkbox.css +0 -38
  145. data/closure-library/closure/goog/css/colormenubutton.css +0 -25
  146. data/closure-library/closure/goog/css/colorpalette.css +0 -54
  147. data/closure-library/closure/goog/css/colorpicker-simplegrid.css +0 -50
  148. data/closure-library/closure/goog/css/combobox.css +0 -57
  149. data/closure-library/closure/goog/css/common.css +0 -41
  150. data/closure-library/closure/goog/css/css3button.css +0 -77
  151. data/closure-library/closure/goog/css/css3menubutton.css +0 -23
  152. data/closure-library/closure/goog/css/custombutton.css +0 -164
  153. data/closure-library/closure/goog/css/datepicker.css +0 -148
  154. data/closure-library/closure/goog/css/dialog.css +0 -72
  155. data/closure-library/closure/goog/css/dimensionpicker.css +0 -47
  156. data/closure-library/closure/goog/css/dragdropdetector.css +0 -48
  157. data/closure-library/closure/goog/css/editor/bubble.css +0 -73
  158. data/closure-library/closure/goog/css/editor/dialog.css +0 -66
  159. data/closure-library/closure/goog/css/editor/linkdialog.css +0 -36
  160. data/closure-library/closure/goog/css/editortoolbar.css +0 -225
  161. data/closure-library/closure/goog/css/filteredmenu.css +0 -30
  162. data/closure-library/closure/goog/css/filterobservingmenuitem.css +0 -25
  163. data/closure-library/closure/goog/css/flatbutton.css +0 -65
  164. data/closure-library/closure/goog/css/flatmenubutton.css +0 -63
  165. data/closure-library/closure/goog/css/hovercard.css +0 -51
  166. data/closure-library/closure/goog/css/hsvapalette.css +0 -231
  167. data/closure-library/closure/goog/css/hsvpalette.css +0 -179
  168. data/closure-library/closure/goog/css/imagelessbutton.css +0 -160
  169. data/closure-library/closure/goog/css/imagelessmenubutton.css +0 -23
  170. data/closure-library/closure/goog/css/inputdatepicker.css +0 -12
  171. data/closure-library/closure/goog/css/linkbutton.css +0 -26
  172. data/closure-library/closure/goog/css/menu.css +0 -27
  173. data/closure-library/closure/goog/css/menubutton.css +0 -169
  174. data/closure-library/closure/goog/css/menuitem.css +0 -96
  175. data/closure-library/closure/goog/css/menuseparator.css +0 -19
  176. data/closure-library/closure/goog/css/multitestrunner.css +0 -121
  177. data/closure-library/closure/goog/css/offline.css +0 -147
  178. data/closure-library/closure/goog/css/palette.css +0 -36
  179. data/closure-library/closure/goog/css/popupdatepicker.css +0 -17
  180. data/closure-library/closure/goog/css/roundedpanel.css +0 -29
  181. data/closure-library/closure/goog/css/roundedtab.css +0 -158
  182. data/closure-library/closure/goog/css/submenu.css +0 -28
  183. data/closure-library/closure/goog/css/tab.css +0 -91
  184. data/closure-library/closure/goog/css/tabbar.css +0 -52
  185. data/closure-library/closure/goog/css/tablesorter.css +0 -14
  186. data/closure-library/closure/goog/css/toolbar.css +0 -400
  187. data/closure-library/closure/goog/css/tooltip.css +0 -14
  188. data/closure-library/closure/goog/css/tree.css +0 -147
  189. data/closure-library/closure/goog/css/tristatemenuitem.css +0 -43
  190. data/closure-library/closure/goog/cssom/cssom.js +0 -447
  191. data/closure-library/closure/goog/cssom/cssom_test.html +0 -343
  192. data/closure-library/closure/goog/cssom/cssom_test_import_1.css +0 -11
  193. data/closure-library/closure/goog/cssom/cssom_test_import_2.css +0 -10
  194. data/closure-library/closure/goog/cssom/cssom_test_link_1.css +0 -10
  195. data/closure-library/closure/goog/cssom/iframe/style.js +0 -1020
  196. data/closure-library/closure/goog/cssom/iframe/style_test.html +0 -391
  197. data/closure-library/closure/goog/cssom/iframe/style_test_import.css +0 -10
  198. data/closure-library/closure/goog/datasource/datamanager.js +0 -566
  199. data/closure-library/closure/goog/datasource/datasource.js +0 -646
  200. data/closure-library/closure/goog/datasource/datasource_test.html +0 -265
  201. data/closure-library/closure/goog/datasource/expr.js +0 -544
  202. data/closure-library/closure/goog/datasource/expr_test.html +0 -97
  203. data/closure-library/closure/goog/datasource/fastdatanode.js +0 -792
  204. data/closure-library/closure/goog/datasource/fastdatanode_test.html +0 -254
  205. data/closure-library/closure/goog/datasource/jsdatasource.js +0 -460
  206. data/closure-library/closure/goog/datasource/jsondatasource.js +0 -146
  207. data/closure-library/closure/goog/datasource/jsxmlhttpdatasource.js +0 -191
  208. data/closure-library/closure/goog/datasource/jsxmlhttpdatasource_test.html +0 -94
  209. data/closure-library/closure/goog/datasource/xmldatasource.js +0 -407
  210. data/closure-library/closure/goog/date/date.js +0 -1642
  211. data/closure-library/closure/goog/date/date_test.html +0 -1293
  212. data/closure-library/closure/goog/date/datelike.js +0 -27
  213. data/closure-library/closure/goog/date/daterange.js +0 -398
  214. data/closure-library/closure/goog/date/daterange_test.html +0 -213
  215. data/closure-library/closure/goog/date/relative.js +0 -425
  216. data/closure-library/closure/goog/date/relative_test.html +0 -124
  217. data/closure-library/closure/goog/date/utcdatetime.js +0 -178
  218. data/closure-library/closure/goog/date/utcdatetime_test.html +0 -119
  219. data/closure-library/closure/goog/debug/console.js +0 -138
  220. data/closure-library/closure/goog/debug/debug.js +0 -452
  221. data/closure-library/closure/goog/debug/debug_test.html +0 -32
  222. data/closure-library/closure/goog/debug/debugwindow.js +0 -582
  223. data/closure-library/closure/goog/debug/devcss/devcss.js +0 -435
  224. data/closure-library/closure/goog/debug/devcss/devcss_test.html +0 -365
  225. data/closure-library/closure/goog/debug/devcss/devcssrunner.js +0 -26
  226. data/closure-library/closure/goog/debug/divconsole.js +0 -141
  227. data/closure-library/closure/goog/debug/enhanceerror_test.html +0 -138
  228. data/closure-library/closure/goog/debug/entrypointregistry.js +0 -111
  229. data/closure-library/closure/goog/debug/entrypointregistry_test.html +0 -63
  230. data/closure-library/closure/goog/debug/error.js +0 -47
  231. data/closure-library/closure/goog/debug/error_test.html +0 -85
  232. data/closure-library/closure/goog/debug/errorhandler.js +0 -234
  233. data/closure-library/closure/goog/debug/errorhandler_async_test.html +0 -112
  234. data/closure-library/closure/goog/debug/errorhandler_test.html +0 -186
  235. data/closure-library/closure/goog/debug/errorhandlerweakdep.js +0 -38
  236. data/closure-library/closure/goog/debug/errorreporter.js +0 -324
  237. data/closure-library/closure/goog/debug/errorreporter_test.html +0 -289
  238. data/closure-library/closure/goog/debug/fancywindow.js +0 -265
  239. data/closure-library/closure/goog/debug/formatter.js +0 -314
  240. data/closure-library/closure/goog/debug/gcdiagnostics.js +0 -143
  241. data/closure-library/closure/goog/debug/logbuffer.js +0 -147
  242. data/closure-library/closure/goog/debug/logbuffer_test.html +0 -105
  243. data/closure-library/closure/goog/debug/logger.js +0 -809
  244. data/closure-library/closure/goog/debug/logger_test.html +0 -208
  245. data/closure-library/closure/goog/debug/logrecord.js +0 -271
  246. data/closure-library/closure/goog/debug/reflect.js +0 -163
  247. data/closure-library/closure/goog/debug/reflect_test.html +0 -81
  248. data/closure-library/closure/goog/debug/relativetimeprovider.js +0 -83
  249. data/closure-library/closure/goog/debug/tracer.js +0 -750
  250. data/closure-library/closure/goog/debug/tracer_test.html +0 -57
  251. data/closure-library/closure/goog/demos/advancedtooltip.html +0 -78
  252. data/closure-library/closure/goog/demos/animationqueue.html +0 -149
  253. data/closure-library/closure/goog/demos/autocomplete-basic.html +0 -56
  254. data/closure-library/closure/goog/demos/autocompleteremote.html +0 -40
  255. data/closure-library/closure/goog/demos/autocompleteremotedata.js +0 -18
  256. data/closure-library/closure/goog/demos/autocompleterichremote.html +0 -137
  257. data/closure-library/closure/goog/demos/autocompleterichremotedata.js +0 -33
  258. data/closure-library/closure/goog/demos/bidiinput.html +0 -72
  259. data/closure-library/closure/goog/demos/bubble.html +0 -250
  260. data/closure-library/closure/goog/demos/button.html +0 -395
  261. data/closure-library/closure/goog/demos/charcounter.html +0 -57
  262. data/closure-library/closure/goog/demos/charpicker.html +0 -64
  263. data/closure-library/closure/goog/demos/checkbox.html +0 -122
  264. data/closure-library/closure/goog/demos/color-contrast.html +0 -60
  265. data/closure-library/closure/goog/demos/colormenubutton.html +0 -213
  266. data/closure-library/closure/goog/demos/colorpicker.html +0 -43
  267. data/closure-library/closure/goog/demos/combobox.html +0 -125
  268. data/closure-library/closure/goog/demos/container.html +0 -670
  269. data/closure-library/closure/goog/demos/control.html +0 -477
  270. data/closure-library/closure/goog/demos/css/demo.css +0 -75
  271. data/closure-library/closure/goog/demos/css/emojipicker.css +0 -36
  272. data/closure-library/closure/goog/demos/css/emojisprite.css +0 -92
  273. data/closure-library/closure/goog/demos/css3button.html +0 -166
  274. data/closure-library/closure/goog/demos/css3menubutton.html +0 -285
  275. data/closure-library/closure/goog/demos/cssspriteanimation.html +0 -80
  276. data/closure-library/closure/goog/demos/datepicker.html +0 -183
  277. data/closure-library/closure/goog/demos/debug.html +0 -119
  278. data/closure-library/closure/goog/demos/depsgraph.html +0 -221
  279. data/closure-library/closure/goog/demos/dialog.html +0 -156
  280. data/closure-library/closure/goog/demos/dimensionpicker.html +0 -108
  281. data/closure-library/closure/goog/demos/dimensionpicker_rtl.html +0 -123
  282. data/closure-library/closure/goog/demos/dom_selection.html +0 -88
  283. data/closure-library/closure/goog/demos/drag.html +0 -191
  284. data/closure-library/closure/goog/demos/dragdrop.html +0 -263
  285. data/closure-library/closure/goog/demos/dragdropdetector.html +0 -46
  286. data/closure-library/closure/goog/demos/dragdropdetector_target.html +0 -17
  287. data/closure-library/closure/goog/demos/dragger.html +0 -83
  288. data/closure-library/closure/goog/demos/draglistgroup.html +0 -261
  289. data/closure-library/closure/goog/demos/drilldownrow.html +0 -78
  290. data/closure-library/closure/goog/demos/editor/deps.js +0 -20
  291. data/closure-library/closure/goog/demos/editor/editor.html +0 -139
  292. data/closure-library/closure/goog/demos/editor/field_basic.html +0 -74
  293. data/closure-library/closure/goog/demos/editor/helloworld.html +0 -91
  294. data/closure-library/closure/goog/demos/editor/helloworld.js +0 -81
  295. data/closure-library/closure/goog/demos/editor/helloworld_test.html +0 -75
  296. data/closure-library/closure/goog/demos/editor/helloworlddialog.js +0 -163
  297. data/closure-library/closure/goog/demos/editor/helloworlddialog_test.html +0 -100
  298. data/closure-library/closure/goog/demos/editor/helloworlddialogplugin.js +0 -110
  299. data/closure-library/closure/goog/demos/editor/helloworlddialogplugin_test.html +0 -198
  300. data/closure-library/closure/goog/demos/editor/seamlessfield.html +0 -106
  301. data/closure-library/closure/goog/demos/effects.html +0 -142
  302. data/closure-library/closure/goog/demos/emoji/200.gif +0 -0
  303. data/closure-library/closure/goog/demos/emoji/201.gif +0 -0
  304. data/closure-library/closure/goog/demos/emoji/202.gif +0 -0
  305. data/closure-library/closure/goog/demos/emoji/203.gif +0 -0
  306. data/closure-library/closure/goog/demos/emoji/204.gif +0 -0
  307. data/closure-library/closure/goog/demos/emoji/205.gif +0 -0
  308. data/closure-library/closure/goog/demos/emoji/206.gif +0 -0
  309. data/closure-library/closure/goog/demos/emoji/2BC.gif +0 -0
  310. data/closure-library/closure/goog/demos/emoji/2BD.gif +0 -0
  311. data/closure-library/closure/goog/demos/emoji/2BE.gif +0 -0
  312. data/closure-library/closure/goog/demos/emoji/2BF.gif +0 -0
  313. data/closure-library/closure/goog/demos/emoji/2C0.gif +0 -0
  314. data/closure-library/closure/goog/demos/emoji/2C1.gif +0 -0
  315. data/closure-library/closure/goog/demos/emoji/2C2.gif +0 -0
  316. data/closure-library/closure/goog/demos/emoji/2C3.gif +0 -0
  317. data/closure-library/closure/goog/demos/emoji/2C4.gif +0 -0
  318. data/closure-library/closure/goog/demos/emoji/2C5.gif +0 -0
  319. data/closure-library/closure/goog/demos/emoji/2C6.gif +0 -0
  320. data/closure-library/closure/goog/demos/emoji/2C7.gif +0 -0
  321. data/closure-library/closure/goog/demos/emoji/2C8.gif +0 -0
  322. data/closure-library/closure/goog/demos/emoji/2C9.gif +0 -0
  323. data/closure-library/closure/goog/demos/emoji/2CA.gif +0 -0
  324. data/closure-library/closure/goog/demos/emoji/2CB.gif +0 -0
  325. data/closure-library/closure/goog/demos/emoji/2CC.gif +0 -0
  326. data/closure-library/closure/goog/demos/emoji/2CD.gif +0 -0
  327. data/closure-library/closure/goog/demos/emoji/2CE.gif +0 -0
  328. data/closure-library/closure/goog/demos/emoji/2CF.gif +0 -0
  329. data/closure-library/closure/goog/demos/emoji/2D0.gif +0 -0
  330. data/closure-library/closure/goog/demos/emoji/2D1.gif +0 -0
  331. data/closure-library/closure/goog/demos/emoji/2D2.gif +0 -0
  332. data/closure-library/closure/goog/demos/emoji/2D3.gif +0 -0
  333. data/closure-library/closure/goog/demos/emoji/2D4.gif +0 -0
  334. data/closure-library/closure/goog/demos/emoji/2D5.gif +0 -0
  335. data/closure-library/closure/goog/demos/emoji/2D6.gif +0 -0
  336. data/closure-library/closure/goog/demos/emoji/2D7.gif +0 -0
  337. data/closure-library/closure/goog/demos/emoji/2D8.gif +0 -0
  338. data/closure-library/closure/goog/demos/emoji/2D9.gif +0 -0
  339. data/closure-library/closure/goog/demos/emoji/2DA.gif +0 -0
  340. data/closure-library/closure/goog/demos/emoji/2DB.gif +0 -0
  341. data/closure-library/closure/goog/demos/emoji/2DC.gif +0 -0
  342. data/closure-library/closure/goog/demos/emoji/2DD.gif +0 -0
  343. data/closure-library/closure/goog/demos/emoji/2DE.gif +0 -0
  344. data/closure-library/closure/goog/demos/emoji/2DF.gif +0 -0
  345. data/closure-library/closure/goog/demos/emoji/2E0.gif +0 -0
  346. data/closure-library/closure/goog/demos/emoji/2E1.gif +0 -0
  347. data/closure-library/closure/goog/demos/emoji/2E2.gif +0 -0
  348. data/closure-library/closure/goog/demos/emoji/2E3.gif +0 -0
  349. data/closure-library/closure/goog/demos/emoji/2E4.gif +0 -0
  350. data/closure-library/closure/goog/demos/emoji/2E5.gif +0 -0
  351. data/closure-library/closure/goog/demos/emoji/2E6.gif +0 -0
  352. data/closure-library/closure/goog/demos/emoji/2E7.gif +0 -0
  353. data/closure-library/closure/goog/demos/emoji/2E8.gif +0 -0
  354. data/closure-library/closure/goog/demos/emoji/2E9.gif +0 -0
  355. data/closure-library/closure/goog/demos/emoji/2EA.gif +0 -0
  356. data/closure-library/closure/goog/demos/emoji/2EB.gif +0 -0
  357. data/closure-library/closure/goog/demos/emoji/2EC.gif +0 -0
  358. data/closure-library/closure/goog/demos/emoji/2ED.gif +0 -0
  359. data/closure-library/closure/goog/demos/emoji/2EE.gif +0 -0
  360. data/closure-library/closure/goog/demos/emoji/2EF.gif +0 -0
  361. data/closure-library/closure/goog/demos/emoji/2F0.gif +0 -0
  362. data/closure-library/closure/goog/demos/emoji/2F1.gif +0 -0
  363. data/closure-library/closure/goog/demos/emoji/2F2.gif +0 -0
  364. data/closure-library/closure/goog/demos/emoji/2F3.gif +0 -0
  365. data/closure-library/closure/goog/demos/emoji/2F4.gif +0 -0
  366. data/closure-library/closure/goog/demos/emoji/2F5.gif +0 -0
  367. data/closure-library/closure/goog/demos/emoji/2F6.gif +0 -0
  368. data/closure-library/closure/goog/demos/emoji/2F7.gif +0 -0
  369. data/closure-library/closure/goog/demos/emoji/2F8.gif +0 -0
  370. data/closure-library/closure/goog/demos/emoji/2F9.gif +0 -0
  371. data/closure-library/closure/goog/demos/emoji/2FA.gif +0 -0
  372. data/closure-library/closure/goog/demos/emoji/2FB.gif +0 -0
  373. data/closure-library/closure/goog/demos/emoji/2FC.gif +0 -0
  374. data/closure-library/closure/goog/demos/emoji/2FD.gif +0 -0
  375. data/closure-library/closure/goog/demos/emoji/2FE.gif +0 -0
  376. data/closure-library/closure/goog/demos/emoji/2FF.gif +0 -0
  377. data/closure-library/closure/goog/demos/emoji/none.gif +0 -0
  378. data/closure-library/closure/goog/demos/emoji/sprite.png +0 -0
  379. data/closure-library/closure/goog/demos/emoji/sprite2.png +0 -0
  380. data/closure-library/closure/goog/demos/emoji/unknown.gif +0 -0
  381. data/closure-library/closure/goog/demos/event-propagation.html +0 -192
  382. data/closure-library/closure/goog/demos/events.html +0 -99
  383. data/closure-library/closure/goog/demos/eventtarget.html +0 -70
  384. data/closure-library/closure/goog/demos/filedrophandler.html +0 -63
  385. data/closure-library/closure/goog/demos/filteredmenu.html +0 -118
  386. data/closure-library/closure/goog/demos/focushandler.html +0 -58
  387. data/closure-library/closure/goog/demos/gauge.html +0 -158
  388. data/closure-library/closure/goog/demos/graphics/advancedcoordinates.html +0 -141
  389. data/closure-library/closure/goog/demos/graphics/advancedcoordinates2.html +0 -130
  390. data/closure-library/closure/goog/demos/graphics/basicelements.html +0 -264
  391. data/closure-library/closure/goog/demos/graphics/events.html +0 -113
  392. data/closure-library/closure/goog/demos/graphics/modifyelements.html +0 -195
  393. data/closure-library/closure/goog/demos/graphics/subpixel.html +0 -80
  394. data/closure-library/closure/goog/demos/graphics/tiger.html +0 -105
  395. data/closure-library/closure/goog/demos/graphics/tigerdata.js +0 -2840
  396. data/closure-library/closure/goog/demos/history1.html +0 -132
  397. data/closure-library/closure/goog/demos/history2.html +0 -100
  398. data/closure-library/closure/goog/demos/history3.html +0 -106
  399. data/closure-library/closure/goog/demos/history3js.html +0 -36
  400. data/closure-library/closure/goog/demos/history_blank.html +0 -25
  401. data/closure-library/closure/goog/demos/hovercard.html +0 -177
  402. data/closure-library/closure/goog/demos/hsvapalette.html +0 -55
  403. data/closure-library/closure/goog/demos/hsvpalette.html +0 -56
  404. data/closure-library/closure/goog/demos/html5history.html +0 -87
  405. data/closure-library/closure/goog/demos/imagelessbutton.html +0 -221
  406. data/closure-library/closure/goog/demos/imagelessmenubutton.html +0 -285
  407. data/closure-library/closure/goog/demos/imagelessroundedcorner.html +0 -231
  408. data/closure-library/closure/goog/demos/index.html +0 -19
  409. data/closure-library/closure/goog/demos/index_nav.html +0 -253
  410. data/closure-library/closure/goog/demos/index_splash.html +0 -22
  411. data/closure-library/closure/goog/demos/inline_block_quirks.html +0 -125
  412. data/closure-library/closure/goog/demos/inline_block_standards.html +0 -126
  413. data/closure-library/closure/goog/demos/inputdatepicker.html +0 -60
  414. data/closure-library/closure/goog/demos/inputhandler.html +0 -72
  415. data/closure-library/closure/goog/demos/jsonprettyprinter.html +0 -80
  416. data/closure-library/closure/goog/demos/keyboardshortcuts.html +0 -112
  417. data/closure-library/closure/goog/demos/keyhandler.html +0 -127
  418. data/closure-library/closure/goog/demos/labelinput.html +0 -42
  419. data/closure-library/closure/goog/demos/menu.html +0 -220
  420. data/closure-library/closure/goog/demos/menubutton.html +0 -318
  421. data/closure-library/closure/goog/demos/mousewheelhandler.html +0 -109
  422. data/closure-library/closure/goog/demos/offline.html +0 -268
  423. data/closure-library/closure/goog/demos/onlinehandler.html +0 -77
  424. data/closure-library/closure/goog/demos/palette.html +0 -302
  425. data/closure-library/closure/goog/demos/pastehandler.html +0 -54
  426. data/closure-library/closure/goog/demos/plaintextspellchecker.html +0 -106
  427. data/closure-library/closure/goog/demos/popup.html +0 -200
  428. data/closure-library/closure/goog/demos/popupcolorpicker.html +0 -49
  429. data/closure-library/closure/goog/demos/popupdatepicker.html +0 -53
  430. data/closure-library/closure/goog/demos/popupemojipicker.html +0 -407
  431. data/closure-library/closure/goog/demos/popupmenu.html +0 -89
  432. data/closure-library/closure/goog/demos/progressbar.html +0 -97
  433. data/closure-library/closure/goog/demos/prompt.html +0 -92
  434. data/closure-library/closure/goog/demos/quadtree.html +0 -107
  435. data/closure-library/closure/goog/demos/ratings.html +0 -120
  436. data/closure-library/closure/goog/demos/richtextspellchecker.html +0 -92
  437. data/closure-library/closure/goog/demos/roundedpanel.html +0 -139
  438. data/closure-library/closure/goog/demos/samplecomponent.html +0 -75
  439. data/closure-library/closure/goog/demos/samplecomponent.js +0 -206
  440. data/closure-library/closure/goog/demos/scrollfloater.html +0 -117
  441. data/closure-library/closure/goog/demos/select.html +0 -324
  442. data/closure-library/closure/goog/demos/selectionmenubutton.html +0 -186
  443. data/closure-library/closure/goog/demos/serverchart.html +0 -122
  444. data/closure-library/closure/goog/demos/silverlightclipboardbutton.html +0 -71
  445. data/closure-library/closure/goog/demos/slider.html +0 -110
  446. data/closure-library/closure/goog/demos/splitbehavior.html +0 -164
  447. data/closure-library/closure/goog/demos/splitpane.html +0 -243
  448. data/closure-library/closure/goog/demos/stopevent.html +0 -171
  449. data/closure-library/closure/goog/demos/submenus.html +0 -130
  450. data/closure-library/closure/goog/demos/submenus2.html +0 -150
  451. data/closure-library/closure/goog/demos/tabbar.html +0 -289
  452. data/closure-library/closure/goog/demos/tablesorter.html +0 -116
  453. data/closure-library/closure/goog/demos/tabpane.html +0 -302
  454. data/closure-library/closure/goog/demos/textarea.html +0 -128
  455. data/closure-library/closure/goog/demos/timers.html +0 -291
  456. data/closure-library/closure/goog/demos/toolbar.html +0 -703
  457. data/closure-library/closure/goog/demos/tooltip.html +0 -91
  458. data/closure-library/closure/goog/demos/tracer.html +0 -92
  459. data/closure-library/closure/goog/demos/tree/demo.html +0 -126
  460. data/closure-library/closure/goog/demos/tree/testdata.js +0 -260
  461. data/closure-library/closure/goog/demos/tweakui.html +0 -121
  462. data/closure-library/closure/goog/demos/twothumbslider.html +0 -121
  463. data/closure-library/closure/goog/demos/useragent.html +0 -173
  464. data/closure-library/closure/goog/demos/viewportsizemonitor.html +0 -71
  465. data/closure-library/closure/goog/demos/xpc/blank.html +0 -7
  466. data/closure-library/closure/goog/demos/xpc/index.html +0 -89
  467. data/closure-library/closure/goog/demos/xpc/inner.html +0 -58
  468. data/closure-library/closure/goog/demos/xpc/minimal/blank.html +0 -7
  469. data/closure-library/closure/goog/demos/xpc/minimal/index.html +0 -105
  470. data/closure-library/closure/goog/demos/xpc/minimal/inner.html +0 -75
  471. data/closure-library/closure/goog/demos/xpc/minimal/relay.html +0 -7
  472. data/closure-library/closure/goog/demos/xpc/relay.html +0 -7
  473. data/closure-library/closure/goog/demos/xpc/xpcdemo.js +0 -304
  474. data/closure-library/closure/goog/demos/zippy.html +0 -127
  475. data/closure-library/closure/goog/deps.js +0 -679
  476. data/closure-library/closure/goog/disposable/disposable.js +0 -167
  477. data/closure-library/closure/goog/disposable/disposable_test.html +0 -202
  478. data/closure-library/closure/goog/dom/a11y.js +0 -438
  479. data/closure-library/closure/goog/dom/a11y_test.html +0 -86
  480. data/closure-library/closure/goog/dom/abstractmultirange.js +0 -77
  481. data/closure-library/closure/goog/dom/abstractrange.js +0 -514
  482. data/closure-library/closure/goog/dom/abstractrange_test.html +0 -73
  483. data/closure-library/closure/goog/dom/annotate.js +0 -352
  484. data/closure-library/closure/goog/dom/annotate_test.html +0 -187
  485. data/closure-library/closure/goog/dom/browserfeature.js +0 -50
  486. data/closure-library/closure/goog/dom/browserrange/abstractrange.js +0 -316
  487. data/closure-library/closure/goog/dom/browserrange/browserrange.js +0 -149
  488. data/closure-library/closure/goog/dom/browserrange/browserrange_test.html +0 -562
  489. data/closure-library/closure/goog/dom/browserrange/geckorange.js +0 -82
  490. data/closure-library/closure/goog/dom/browserrange/ierange.js +0 -970
  491. data/closure-library/closure/goog/dom/browserrange/operarange.js +0 -83
  492. data/closure-library/closure/goog/dom/browserrange/w3crange.js +0 -364
  493. data/closure-library/closure/goog/dom/browserrange/webkitrange.js +0 -112
  494. data/closure-library/closure/goog/dom/classes.js +0 -233
  495. data/closure-library/closure/goog/dom/classes_test.html +0 -228
  496. data/closure-library/closure/goog/dom/controlrange.js +0 -511
  497. data/closure-library/closure/goog/dom/controlrange_test.html +0 -246
  498. data/closure-library/closure/goog/dom/dataset.js +0 -90
  499. data/closure-library/closure/goog/dom/dataset_test.html +0 -104
  500. data/closure-library/closure/goog/dom/dom.js +0 -2424
  501. data/closure-library/closure/goog/dom/dom_quirks_test.html +0 -104
  502. data/closure-library/closure/goog/dom/dom_test.html +0 -103
  503. data/closure-library/closure/goog/dom/dom_test.js +0 -1129
  504. data/closure-library/closure/goog/dom/fontsizemonitor.js +0 -159
  505. data/closure-library/closure/goog/dom/fontsizemonitor_test.html +0 -283
  506. data/closure-library/closure/goog/dom/forms.js +0 -403
  507. data/closure-library/closure/goog/dom/forms_test.html +0 -483
  508. data/closure-library/closure/goog/dom/iframe.js +0 -128
  509. data/closure-library/closure/goog/dom/iframe_test.html +0 -87
  510. data/closure-library/closure/goog/dom/iter.js +0 -127
  511. data/closure-library/closure/goog/dom/iter_test.html +0 -97
  512. data/closure-library/closure/goog/dom/multirange.js +0 -519
  513. data/closure-library/closure/goog/dom/multirange_test.html +0 -67
  514. data/closure-library/closure/goog/dom/nodeiterator.js +0 -85
  515. data/closure-library/closure/goog/dom/nodeiterator_test.html +0 -49
  516. data/closure-library/closure/goog/dom/nodeoffset.js +0 -111
  517. data/closure-library/closure/goog/dom/nodeoffset_test.html +0 -88
  518. data/closure-library/closure/goog/dom/pattern/abstractpattern.js +0 -60
  519. data/closure-library/closure/goog/dom/pattern/allchildren.js +0 -73
  520. data/closure-library/closure/goog/dom/pattern/callback/callback.js +0 -82
  521. data/closure-library/closure/goog/dom/pattern/callback/counter.js +0 -72
  522. data/closure-library/closure/goog/dom/pattern/callback/test.js +0 -77
  523. data/closure-library/closure/goog/dom/pattern/childmatches.js +0 -152
  524. data/closure-library/closure/goog/dom/pattern/endtag.js +0 -53
  525. data/closure-library/closure/goog/dom/pattern/fulltag.js +0 -92
  526. data/closure-library/closure/goog/dom/pattern/matcher.js +0 -150
  527. data/closure-library/closure/goog/dom/pattern/matcher_test.html +0 -204
  528. data/closure-library/closure/goog/dom/pattern/nodetype.js +0 -57
  529. data/closure-library/closure/goog/dom/pattern/pattern.js +0 -93
  530. data/closure-library/closure/goog/dom/pattern/pattern_test.html +0 -614
  531. data/closure-library/closure/goog/dom/pattern/repeat.js +0 -188
  532. data/closure-library/closure/goog/dom/pattern/sequence.js +0 -139
  533. data/closure-library/closure/goog/dom/pattern/starttag.js +0 -53
  534. data/closure-library/closure/goog/dom/pattern/tag.js +0 -149
  535. data/closure-library/closure/goog/dom/pattern/text.js +0 -69
  536. data/closure-library/closure/goog/dom/range.js +0 -220
  537. data/closure-library/closure/goog/dom/range_test.html +0 -702
  538. data/closure-library/closure/goog/dom/rangeendpoint.js +0 -32
  539. data/closure-library/closure/goog/dom/savedcaretrange.js +0 -203
  540. data/closure-library/closure/goog/dom/savedcaretrange_test.html +0 -235
  541. data/closure-library/closure/goog/dom/savedrange.js +0 -74
  542. data/closure-library/closure/goog/dom/savedrange_test.html +0 -61
  543. data/closure-library/closure/goog/dom/selection.js +0 -470
  544. data/closure-library/closure/goog/dom/selection_test.html +0 -329
  545. data/closure-library/closure/goog/dom/tagiterator.js +0 -365
  546. data/closure-library/closure/goog/dom/tagiterator_test.html +0 -589
  547. data/closure-library/closure/goog/dom/tagname.js +0 -121
  548. data/closure-library/closure/goog/dom/tagname_test.html +0 -37
  549. data/closure-library/closure/goog/dom/textrange.js +0 -611
  550. data/closure-library/closure/goog/dom/textrange_test.html +0 -127
  551. data/closure-library/closure/goog/dom/textrangeiterator.js +0 -246
  552. data/closure-library/closure/goog/dom/textrangeiterator_test.html +0 -142
  553. data/closure-library/closure/goog/dom/viewportsizemonitor.js +0 -220
  554. data/closure-library/closure/goog/dom/viewportsizemonitor_test.html +0 -166
  555. data/closure-library/closure/goog/dom/xml.js +0 -187
  556. data/closure-library/closure/goog/dom/xml_test.html +0 -77
  557. data/closure-library/closure/goog/editor/browserfeature.js +0 -251
  558. data/closure-library/closure/goog/editor/browserfeature_test.html +0 -124
  559. data/closure-library/closure/goog/editor/clicktoeditwrapper.js +0 -438
  560. data/closure-library/closure/goog/editor/clicktoeditwrapper_test.html +0 -137
  561. data/closure-library/closure/goog/editor/command.js +0 -74
  562. data/closure-library/closure/goog/editor/defines.js +0 -34
  563. data/closure-library/closure/goog/editor/field.js +0 -2594
  564. data/closure-library/closure/goog/editor/field_test.html +0 -1000
  565. data/closure-library/closure/goog/editor/focus.js +0 -32
  566. data/closure-library/closure/goog/editor/focus_test.html +0 -66
  567. data/closure-library/closure/goog/editor/icontent.js +0 -296
  568. data/closure-library/closure/goog/editor/icontent_test.html +0 -209
  569. data/closure-library/closure/goog/editor/link.js +0 -279
  570. data/closure-library/closure/goog/editor/link_test.html +0 -234
  571. data/closure-library/closure/goog/editor/node.js +0 -435
  572. data/closure-library/closure/goog/editor/node_test.html +0 -590
  573. data/closure-library/closure/goog/editor/plugin.js +0 -444
  574. data/closure-library/closure/goog/editor/plugin_test.html +0 -187
  575. data/closure-library/closure/goog/editor/plugins/abstractbubbleplugin.js +0 -535
  576. data/closure-library/closure/goog/editor/plugins/abstractbubbleplugin_test.html +0 -227
  577. data/closure-library/closure/goog/editor/plugins/abstractdialogplugin.js +0 -336
  578. data/closure-library/closure/goog/editor/plugins/abstractdialogplugin_test.html +0 -399
  579. data/closure-library/closure/goog/editor/plugins/abstracttabhandler.js +0 -78
  580. data/closure-library/closure/goog/editor/plugins/abstracttabhandler_test.html +0 -91
  581. data/closure-library/closure/goog/editor/plugins/basictextformatter.js +0 -1740
  582. data/closure-library/closure/goog/editor/plugins/basictextformatter_test.html +0 -1171
  583. data/closure-library/closure/goog/editor/plugins/blockquote.js +0 -422
  584. data/closure-library/closure/goog/editor/plugins/blockquote_test.html +0 -149
  585. data/closure-library/closure/goog/editor/plugins/emoticons.js +0 -83
  586. data/closure-library/closure/goog/editor/plugins/emoticons_test.html +0 -67
  587. data/closure-library/closure/goog/editor/plugins/enterhandler.js +0 -730
  588. data/closure-library/closure/goog/editor/plugins/enterhandler_test.html +0 -739
  589. data/closure-library/closure/goog/editor/plugins/headerformatter.js +0 -95
  590. data/closure-library/closure/goog/editor/plugins/headerformatter_test.html +0 -100
  591. data/closure-library/closure/goog/editor/plugins/linkbubble.js +0 -458
  592. data/closure-library/closure/goog/editor/plugins/linkbubble_test.html +0 -309
  593. data/closure-library/closure/goog/editor/plugins/linkdialogplugin.js +0 -222
  594. data/closure-library/closure/goog/editor/plugins/linkdialogplugin_test.html +0 -370
  595. data/closure-library/closure/goog/editor/plugins/listtabhandler.js +0 -66
  596. data/closure-library/closure/goog/editor/plugins/listtabhandler_test.html +0 -177
  597. data/closure-library/closure/goog/editor/plugins/loremipsum.js +0 -186
  598. data/closure-library/closure/goog/editor/plugins/loremipsum_test.html +0 -169
  599. data/closure-library/closure/goog/editor/plugins/removeformatting.js +0 -772
  600. data/closure-library/closure/goog/editor/plugins/removeformatting_test.html +0 -920
  601. data/closure-library/closure/goog/editor/plugins/spacestabhandler.js +0 -93
  602. data/closure-library/closure/goog/editor/plugins/spacestabhandler_test.html +0 -186
  603. data/closure-library/closure/goog/editor/plugins/tableeditor.js +0 -496
  604. data/closure-library/closure/goog/editor/plugins/tableeditor_test.html +0 -299
  605. data/closure-library/closure/goog/editor/plugins/tagonenterhandler.js +0 -741
  606. data/closure-library/closure/goog/editor/plugins/tagonenterhandler_test.html +0 -481
  607. data/closure-library/closure/goog/editor/plugins/undoredo.js +0 -1014
  608. data/closure-library/closure/goog/editor/plugins/undoredo_test.html +0 -525
  609. data/closure-library/closure/goog/editor/plugins/undoredomanager.js +0 -337
  610. data/closure-library/closure/goog/editor/plugins/undoredomanager_test.html +0 -394
  611. data/closure-library/closure/goog/editor/plugins/undoredostate.js +0 -84
  612. data/closure-library/closure/goog/editor/plugins/undoredostate_test.html +0 -44
  613. data/closure-library/closure/goog/editor/range.js +0 -602
  614. data/closure-library/closure/goog/editor/range_test.html +0 -880
  615. data/closure-library/closure/goog/editor/seamlessfield.js +0 -720
  616. data/closure-library/closure/goog/editor/seamlessfield_quirks_test.html +0 -30
  617. data/closure-library/closure/goog/editor/seamlessfield_test.html +0 -33
  618. data/closure-library/closure/goog/editor/seamlessfield_test.js +0 -392
  619. data/closure-library/closure/goog/editor/style.js +0 -222
  620. data/closure-library/closure/goog/editor/style_test.html +0 -177
  621. data/closure-library/closure/goog/editor/table.js +0 -566
  622. data/closure-library/closure/goog/editor/table_test.html +0 -522
  623. data/closure-library/closure/goog/events/actioneventwrapper.js +0 -131
  624. data/closure-library/closure/goog/events/actioneventwrapper_test.html +0 -176
  625. data/closure-library/closure/goog/events/actionhandler.js +0 -189
  626. data/closure-library/closure/goog/events/actionhandler_test.html +0 -82
  627. data/closure-library/closure/goog/events/browserevent.js +0 -412
  628. data/closure-library/closure/goog/events/browserevent_test.html +0 -145
  629. data/closure-library/closure/goog/events/browserfeature.js +0 -43
  630. data/closure-library/closure/goog/events/event.js +0 -123
  631. data/closure-library/closure/goog/events/event_test.html +0 -70
  632. data/closure-library/closure/goog/events/eventhandler.js +0 -348
  633. data/closure-library/closure/goog/events/eventhandler_test.html +0 -230
  634. data/closure-library/closure/goog/events/events.js +0 -1101
  635. data/closure-library/closure/goog/events/events_test.html +0 -362
  636. data/closure-library/closure/goog/events/eventtarget.js +0 -197
  637. data/closure-library/closure/goog/events/eventtarget_test.html +0 -423
  638. data/closure-library/closure/goog/events/eventtype.js +0 -107
  639. data/closure-library/closure/goog/events/eventwrapper.js +0 -67
  640. data/closure-library/closure/goog/events/filedrophandler.js +0 -224
  641. data/closure-library/closure/goog/events/filedrophandler_test.html +0 -258
  642. data/closure-library/closure/goog/events/focushandler.js +0 -111
  643. data/closure-library/closure/goog/events/imehandler.js +0 -365
  644. data/closure-library/closure/goog/events/imehandler_test.html +0 -271
  645. data/closure-library/closure/goog/events/inputhandler.js +0 -218
  646. data/closure-library/closure/goog/events/keycodes.js +0 -314
  647. data/closure-library/closure/goog/events/keycodes_test.html +0 -72
  648. data/closure-library/closure/goog/events/keyhandler.js +0 -522
  649. data/closure-library/closure/goog/events/keyhandler_test.html +0 -621
  650. data/closure-library/closure/goog/events/keynames.js +0 -124
  651. data/closure-library/closure/goog/events/listener.js +0 -160
  652. data/closure-library/closure/goog/events/mousewheelhandler.js +0 -280
  653. data/closure-library/closure/goog/events/mousewheelhandler_test.html +0 -331
  654. data/closure-library/closure/goog/events/onlinehandler.js +0 -176
  655. data/closure-library/closure/goog/events/onlinelistener_test.html +0 -214
  656. data/closure-library/closure/goog/events/pastehandler.js +0 -444
  657. data/closure-library/closure/goog/events/pastehandler_test.html +0 -354
  658. data/closure-library/closure/goog/events/pools.js +0 -342
  659. data/closure-library/closure/goog/format/emailaddress.js +0 -329
  660. data/closure-library/closure/goog/format/emailaddress_test.html +0 -179
  661. data/closure-library/closure/goog/format/format.js +0 -451
  662. data/closure-library/closure/goog/format/format_test.html +0 -257
  663. data/closure-library/closure/goog/format/htmlprettyprinter.js +0 -406
  664. data/closure-library/closure/goog/format/htmlprettyprinter_test.html +0 -205
  665. data/closure-library/closure/goog/format/jsonprettyprinter.js +0 -405
  666. data/closure-library/closure/goog/format/jsonprettyprinter_test.html +0 -111
  667. data/closure-library/closure/goog/fs/entry.js +0 -406
  668. data/closure-library/closure/goog/fs/error.js +0 -103
  669. data/closure-library/closure/goog/fs/filesaver.js +0 -214
  670. data/closure-library/closure/goog/fs/filesystem.js +0 -59
  671. data/closure-library/closure/goog/fs/filewriter.js +0 -106
  672. data/closure-library/closure/goog/fs/fs.js +0 -183
  673. data/closure-library/closure/goog/fs/fs_test.html +0 -270
  674. data/closure-library/closure/goog/functions/functions.js +0 -219
  675. data/closure-library/closure/goog/functions/functions_test.html +0 -198
  676. data/closure-library/closure/goog/fx/abstractdragdrop.js +0 -1451
  677. data/closure-library/closure/goog/fx/abstractdragdrop_test.html +0 -430
  678. data/closure-library/closure/goog/fx/animation.js +0 -621
  679. data/closure-library/closure/goog/fx/animationqueue.js +0 -348
  680. data/closure-library/closure/goog/fx/cssspriteanimation.js +0 -112
  681. data/closure-library/closure/goog/fx/cssspriteanimation_test.html +0 -125
  682. data/closure-library/closure/goog/fx/dom.js +0 -610
  683. data/closure-library/closure/goog/fx/dragdrop.js +0 -49
  684. data/closure-library/closure/goog/fx/dragdropgroup.js +0 -107
  685. data/closure-library/closure/goog/fx/dragdropgroup_test.html +0 -234
  686. data/closure-library/closure/goog/fx/dragger.js +0 -731
  687. data/closure-library/closure/goog/fx/dragger_test.html +0 -415
  688. data/closure-library/closure/goog/fx/draglistgroup.js +0 -1159
  689. data/closure-library/closure/goog/fx/draglistgroup_test.html +0 -231
  690. data/closure-library/closure/goog/fx/dragscrollsupport.js +0 -274
  691. data/closure-library/closure/goog/fx/dragscrollsupport_test.html +0 -253
  692. data/closure-library/closure/goog/fx/easing.js +0 -50
  693. data/closure-library/closure/goog/fx/fx.js +0 -30
  694. data/closure-library/closure/goog/fx/fx_test.html +0 -157
  695. data/closure-library/closure/goog/gears/basestore.js +0 -523
  696. data/closure-library/closure/goog/gears/basestore_test.html +0 -247
  697. data/closure-library/closure/goog/gears/database.js +0 -935
  698. data/closure-library/closure/goog/gears/database_test.html +0 -699
  699. data/closure-library/closure/goog/gears/fakeworkerpool.js +0 -252
  700. data/closure-library/closure/goog/gears/fakeworkerpool_test.html +0 -188
  701. data/closure-library/closure/goog/gears/gears.js +0 -228
  702. data/closure-library/closure/goog/gears/gears_test.html +0 -78
  703. data/closure-library/closure/goog/gears/httprequest.js +0 -77
  704. data/closure-library/closure/goog/gears/loggerclient.js +0 -131
  705. data/closure-library/closure/goog/gears/loggerclient_test.html +0 -171
  706. data/closure-library/closure/goog/gears/loggerserver.js +0 -158
  707. data/closure-library/closure/goog/gears/loggerserver_test.html +0 -118
  708. data/closure-library/closure/goog/gears/logstore.js +0 -479
  709. data/closure-library/closure/goog/gears/logstore_test.html +0 -600
  710. data/closure-library/closure/goog/gears/managedresourcestore.js +0 -553
  711. data/closure-library/closure/goog/gears/managedresourcestore_test.html +0 -453
  712. data/closure-library/closure/goog/gears/multipartformdata.js +0 -203
  713. data/closure-library/closure/goog/gears/multipartformdata_test.html +0 -220
  714. data/closure-library/closure/goog/gears/statustype.js +0 -37
  715. data/closure-library/closure/goog/gears/urlcapture.js +0 -370
  716. data/closure-library/closure/goog/gears/urlcapture_test.html +0 -392
  717. data/closure-library/closure/goog/gears/worker.js +0 -201
  718. data/closure-library/closure/goog/gears/workerchannel.js +0 -205
  719. data/closure-library/closure/goog/gears/workerchannel_test.html +0 -207
  720. data/closure-library/closure/goog/gears/workerpool.js +0 -241
  721. data/closure-library/closure/goog/gears/workerpool_test.html +0 -203
  722. data/closure-library/closure/goog/graphics/abstractgraphics.js +0 -439
  723. data/closure-library/closure/goog/graphics/affinetransform.js +0 -497
  724. data/closure-library/closure/goog/graphics/affinetransform_test.html +0 -316
  725. data/closure-library/closure/goog/graphics/canvaselement.js +0 -776
  726. data/closure-library/closure/goog/graphics/canvasgraphics.js +0 -632
  727. data/closure-library/closure/goog/graphics/element.js +0 -145
  728. data/closure-library/closure/goog/graphics/ellipseelement.js +0 -59
  729. data/closure-library/closure/goog/graphics/ext/coordinates.js +0 -158
  730. data/closure-library/closure/goog/graphics/ext/coordinates_test.html +0 -74
  731. data/closure-library/closure/goog/graphics/ext/element.js +0 -970
  732. data/closure-library/closure/goog/graphics/ext/element_test.html +0 -144
  733. data/closure-library/closure/goog/graphics/ext/ellipse.js +0 -58
  734. data/closure-library/closure/goog/graphics/ext/ext.js +0 -29
  735. data/closure-library/closure/goog/graphics/ext/graphics.js +0 -209
  736. data/closure-library/closure/goog/graphics/ext/group.js +0 -213
  737. data/closure-library/closure/goog/graphics/ext/image.js +0 -62
  738. data/closure-library/closure/goog/graphics/ext/path.js +0 -140
  739. data/closure-library/closure/goog/graphics/ext/path_test.html +0 -46
  740. data/closure-library/closure/goog/graphics/ext/rectangle.js +0 -53
  741. data/closure-library/closure/goog/graphics/ext/shape.js +0 -144
  742. data/closure-library/closure/goog/graphics/ext/strokeandfillelement.js +0 -69
  743. data/closure-library/closure/goog/graphics/fill.js +0 -29
  744. data/closure-library/closure/goog/graphics/font.js +0 -59
  745. data/closure-library/closure/goog/graphics/graphics.js +0 -124
  746. data/closure-library/closure/goog/graphics/groupelement.js +0 -54
  747. data/closure-library/closure/goog/graphics/imageelement.js +0 -67
  748. data/closure-library/closure/goog/graphics/lineargradient.js +0 -131
  749. data/closure-library/closure/goog/graphics/path.js +0 -508
  750. data/closure-library/closure/goog/graphics/path_test.html +0 -359
  751. data/closure-library/closure/goog/graphics/pathelement.js +0 -50
  752. data/closure-library/closure/goog/graphics/paths.js +0 -86
  753. data/closure-library/closure/goog/graphics/paths_test.html +0 -97
  754. data/closure-library/closure/goog/graphics/rectelement.js +0 -59
  755. data/closure-library/closure/goog/graphics/solidfill.js +0 -70
  756. data/closure-library/closure/goog/graphics/stroke.js +0 -63
  757. data/closure-library/closure/goog/graphics/strokeandfillelement.js +0 -110
  758. data/closure-library/closure/goog/graphics/svgelement.js +0 -262
  759. data/closure-library/closure/goog/graphics/svggraphics.js +0 -813
  760. data/closure-library/closure/goog/graphics/textelement.js +0 -51
  761. data/closure-library/closure/goog/graphics/vmlelement.js +0 -380
  762. data/closure-library/closure/goog/graphics/vmlgraphics.js +0 -863
  763. data/closure-library/closure/goog/history/event.js +0 -54
  764. data/closure-library/closure/goog/history/eventtype.js +0 -30
  765. data/closure-library/closure/goog/history/history.js +0 -979
  766. data/closure-library/closure/goog/history/html5history.js +0 -303
  767. data/closure-library/closure/goog/history/html5history_test.html +0 -163
  768. data/closure-library/closure/goog/i18n/bidi.js +0 -772
  769. data/closure-library/closure/goog/i18n/bidi_test.html +0 -414
  770. data/closure-library/closure/goog/i18n/bidiformatter.js +0 -488
  771. data/closure-library/closure/goog/i18n/bidiformatter_test.html +0 -343
  772. data/closure-library/closure/goog/i18n/charlistdecompressor.js +0 -157
  773. data/closure-library/closure/goog/i18n/charlistdecompressor_test.html +0 -65
  774. data/closure-library/closure/goog/i18n/charpickerdata.js +0 -3185
  775. data/closure-library/closure/goog/i18n/currency.js +0 -385
  776. data/closure-library/closure/goog/i18n/currency_test.html +0 -202
  777. data/closure-library/closure/goog/i18n/currencycodemap.js +0 -210
  778. data/closure-library/closure/goog/i18n/datetimeformat.js +0 -636
  779. data/closure-library/closure/goog/i18n/datetimeformat_test.html +0 -436
  780. data/closure-library/closure/goog/i18n/datetimeparse.js +0 -1111
  781. data/closure-library/closure/goog/i18n/datetimeparse_test.html +0 -796
  782. data/closure-library/closure/goog/i18n/datetimepatterns.js +0 -1586
  783. data/closure-library/closure/goog/i18n/datetimepatternsext.js +0 -7386
  784. data/closure-library/closure/goog/i18n/datetimesymbols.js +0 -3350
  785. data/closure-library/closure/goog/i18n/datetimesymbolsext.js +0 -12938
  786. data/closure-library/closure/goog/i18n/graphemebreak.js +0 -181
  787. data/closure-library/closure/goog/i18n/graphemebreak_test.html +0 -72
  788. data/closure-library/closure/goog/i18n/messageformat.js +0 -556
  789. data/closure-library/closure/goog/i18n/messageformat_test.html +0 -334
  790. data/closure-library/closure/goog/i18n/mime.js +0 -100
  791. data/closure-library/closure/goog/i18n/mime_test.html +0 -51
  792. data/closure-library/closure/goog/i18n/numberformat.js +0 -763
  793. data/closure-library/closure/goog/i18n/numberformat_test.html +0 -605
  794. data/closure-library/closure/goog/i18n/numberformatsymbols.js +0 -10358
  795. data/closure-library/closure/goog/i18n/pluralrules.js +0 -695
  796. data/closure-library/closure/goog/i18n/timezone.js +0 -341
  797. data/closure-library/closure/goog/i18n/timezone_test.html +0 -163
  798. data/closure-library/closure/goog/i18n/uchar.js +0 -1160
  799. data/closure-library/closure/goog/i18n/uchar_test.html +0 -72
  800. data/closure-library/closure/goog/images/blank.gif +0 -0
  801. data/closure-library/closure/goog/images/bubble_close.jpg +0 -0
  802. data/closure-library/closure/goog/images/bubble_left.gif +0 -0
  803. data/closure-library/closure/goog/images/bubble_right.gif +0 -0
  804. data/closure-library/closure/goog/images/button-bg.gif +0 -0
  805. data/closure-library/closure/goog/images/check-outline.gif +0 -0
  806. data/closure-library/closure/goog/images/check-sprite.gif +0 -0
  807. data/closure-library/closure/goog/images/check.gif +0 -0
  808. data/closure-library/closure/goog/images/close_box.gif +0 -0
  809. data/closure-library/closure/goog/images/color-swatch-tick.gif +0 -0
  810. data/closure-library/closure/goog/images/dialog_close_box.gif +0 -0
  811. data/closure-library/closure/goog/images/dimension-highlighted.png +0 -0
  812. data/closure-library/closure/goog/images/dimension-unhighlighted.png +0 -0
  813. data/closure-library/closure/goog/images/dropdn.gif +0 -0
  814. data/closure-library/closure/goog/images/dropdn_disabled.gif +0 -0
  815. data/closure-library/closure/goog/images/dropdown.gif +0 -0
  816. data/closure-library/closure/goog/images/gears_bluedot.gif +0 -0
  817. data/closure-library/closure/goog/images/gears_offline.gif +0 -0
  818. data/closure-library/closure/goog/images/gears_online.gif +0 -0
  819. data/closure-library/closure/goog/images/gears_paused.gif +0 -0
  820. data/closure-library/closure/goog/images/gears_syncing.gif +0 -0
  821. data/closure-library/closure/goog/images/hsv-sprite-sm.gif +0 -0
  822. data/closure-library/closure/goog/images/hsv-sprite-sm.png +0 -0
  823. data/closure-library/closure/goog/images/hsv-sprite.gif +0 -0
  824. data/closure-library/closure/goog/images/hsv-sprite.png +0 -0
  825. data/closure-library/closure/goog/images/hsva-sprite-sm.gif +0 -0
  826. data/closure-library/closure/goog/images/hsva-sprite-sm.png +0 -0
  827. data/closure-library/closure/goog/images/hsva-sprite.gif +0 -0
  828. data/closure-library/closure/goog/images/hsva-sprite.png +0 -0
  829. data/closure-library/closure/goog/images/left_anchor_bubble_bot.gif +0 -0
  830. data/closure-library/closure/goog/images/left_anchor_bubble_top.gif +0 -0
  831. data/closure-library/closure/goog/images/menu-arrows.gif +0 -0
  832. data/closure-library/closure/goog/images/minus.png +0 -0
  833. data/closure-library/closure/goog/images/no_anchor_bubble_bot.gif +0 -0
  834. data/closure-library/closure/goog/images/no_anchor_bubble_top.gif +0 -0
  835. data/closure-library/closure/goog/images/offlineicons.png +0 -0
  836. data/closure-library/closure/goog/images/plus.png +0 -0
  837. data/closure-library/closure/goog/images/ratingstars.gif +0 -0
  838. data/closure-library/closure/goog/images/right_anchor_bubble_bot.gif +0 -0
  839. data/closure-library/closure/goog/images/right_anchor_bubble_top.gif +0 -0
  840. data/closure-library/closure/goog/images/toolbar-bg.png +0 -0
  841. data/closure-library/closure/goog/images/toolbar-separator.gif +0 -0
  842. data/closure-library/closure/goog/images/toolbar_icons.gif +0 -0
  843. data/closure-library/closure/goog/images/tree/I.png +0 -0
  844. data/closure-library/closure/goog/images/tree/cleardot.gif +0 -0
  845. data/closure-library/closure/goog/images/tree/tree.gif +0 -0
  846. data/closure-library/closure/goog/images/tree/tree.png +0 -0
  847. data/closure-library/closure/goog/images/ui_controls.jpg +0 -0
  848. data/closure-library/closure/goog/iter/iter.js +0 -627
  849. data/closure-library/closure/goog/iter/iter_test.html +0 -443
  850. data/closure-library/closure/goog/json/json.js +0 -302
  851. data/closure-library/closure/goog/json/json_test.html +0 -501
  852. data/closure-library/closure/goog/locale/countries.js +0 -288
  853. data/closure-library/closure/goog/locale/countrylanguagenames_test.html +0 -233
  854. data/closure-library/closure/goog/locale/defaultlocalenameconstants.js +0 -847
  855. data/closure-library/closure/goog/locale/genericfontnames.js +0 -73
  856. data/closure-library/closure/goog/locale/genericfontnames_test.html +0 -97
  857. data/closure-library/closure/goog/locale/genericfontnamesdata.js +0 -328
  858. data/closure-library/closure/goog/locale/locale.js +0 -397
  859. data/closure-library/closure/goog/locale/nativenameconstants.js +0 -1354
  860. data/closure-library/closure/goog/locale/scriptToLanguages.js +0 -482
  861. data/closure-library/closure/goog/locale/timezonedetection.js +0 -117
  862. data/closure-library/closure/goog/locale/timezonedetection_test.html +0 -130
  863. data/closure-library/closure/goog/locale/timezonefingerprint.js +0 -250
  864. data/closure-library/closure/goog/locale/timezonelist.js +0 -129
  865. data/closure-library/closure/goog/locale/timezonelist_test.html +0 -165
  866. data/closure-library/closure/goog/math/bezier.js +0 -244
  867. data/closure-library/closure/goog/math/bezier_test.html +0 -70
  868. data/closure-library/closure/goog/math/box.js +0 -236
  869. data/closure-library/closure/goog/math/box_test.html +0 -139
  870. data/closure-library/closure/goog/math/coordinate.js +0 -136
  871. data/closure-library/closure/goog/math/coordinate3.js +0 -168
  872. data/closure-library/closure/goog/math/coordinate3_test.html +0 -208
  873. data/closure-library/closure/goog/math/coordinate_test.html +0 -92
  874. data/closure-library/closure/goog/math/integer.js +0 -736
  875. data/closure-library/closure/goog/math/integer_test.html +0 -1653
  876. data/closure-library/closure/goog/math/line.js +0 -177
  877. data/closure-library/closure/goog/math/line_test.html +0 -62
  878. data/closure-library/closure/goog/math/long.js +0 -801
  879. data/closure-library/closure/goog/math/long_test.html +0 -1571
  880. data/closure-library/closure/goog/math/math.js +0 -355
  881. data/closure-library/closure/goog/math/math_test.html +0 -254
  882. data/closure-library/closure/goog/math/matrix.js +0 -669
  883. data/closure-library/closure/goog/math/matrix_test.html +0 -427
  884. data/closure-library/closure/goog/math/range.js +0 -146
  885. data/closure-library/closure/goog/math/range_test.html +0 -103
  886. data/closure-library/closure/goog/math/rangeset.js +0 -368
  887. data/closure-library/closure/goog/math/rangeset_test.html +0 -619
  888. data/closure-library/closure/goog/math/rect.js +0 -340
  889. data/closure-library/closure/goog/math/rect_test.html +0 -315
  890. data/closure-library/closure/goog/math/size.js +0 -201
  891. data/closure-library/closure/goog/math/size_test.html +0 -174
  892. data/closure-library/closure/goog/math/vec2.js +0 -255
  893. data/closure-library/closure/goog/math/vec2_test.html +0 -203
  894. data/closure-library/closure/goog/math/vec3.js +0 -308
  895. data/closure-library/closure/goog/math/vec3_test.html +0 -231
  896. data/closure-library/closure/goog/memoize/memoize.js +0 -98
  897. data/closure-library/closure/goog/memoize/memoize_test.html +0 -157
  898. data/closure-library/closure/goog/messaging/abstractchannel.js +0 -209
  899. data/closure-library/closure/goog/messaging/abstractchannel_test.html +0 -90
  900. data/closure-library/closure/goog/messaging/bufferedchannel.js +0 -277
  901. data/closure-library/closure/goog/messaging/bufferedchannel_test.html +0 -205
  902. data/closure-library/closure/goog/messaging/deferredchannel.js +0 -79
  903. data/closure-library/closure/goog/messaging/deferredchannel_test.html +0 -107
  904. data/closure-library/closure/goog/messaging/loggerclient.js +0 -131
  905. data/closure-library/closure/goog/messaging/loggerclient_test.html +0 -102
  906. data/closure-library/closure/goog/messaging/loggerserver.js +0 -94
  907. data/closure-library/closure/goog/messaging/loggerserver_test.html +0 -101
  908. data/closure-library/closure/goog/messaging/messagechannel.js +0 -115
  909. data/closure-library/closure/goog/messaging/messaging.js +0 -34
  910. data/closure-library/closure/goog/messaging/messaging_test.html +0 -42
  911. data/closure-library/closure/goog/messaging/multichannel.js +0 -303
  912. data/closure-library/closure/goog/messaging/multichannel_test.html +0 -122
  913. data/closure-library/closure/goog/messaging/portcaller.js +0 -150
  914. data/closure-library/closure/goog/messaging/portcaller_test.html +0 -66
  915. data/closure-library/closure/goog/messaging/portchannel.js +0 -341
  916. data/closure-library/closure/goog/messaging/portchannel_test.html +0 -359
  917. data/closure-library/closure/goog/messaging/portnetwork.js +0 -78
  918. data/closure-library/closure/goog/messaging/portnetwork_test.html +0 -64
  919. data/closure-library/closure/goog/messaging/portoperator.js +0 -196
  920. data/closure-library/closure/goog/messaging/portoperator_test.html +0 -112
  921. data/closure-library/closure/goog/messaging/testdata/portchannel_inner.html +0 -28
  922. data/closure-library/closure/goog/messaging/testdata/portchannel_worker.js +0 -37
  923. data/closure-library/closure/goog/messaging/testdata/portnetwork_inner.html +0 -35
  924. data/closure-library/closure/goog/messaging/testdata/portnetwork_worker1.js +0 -33
  925. data/closure-library/closure/goog/messaging/testdata/portnetwork_worker2.js +0 -33
  926. data/closure-library/closure/goog/module/abstractmoduleloader.js +0 -46
  927. data/closure-library/closure/goog/module/basemodule.js +0 -45
  928. data/closure-library/closure/goog/module/basemoduleloader.js +0 -210
  929. data/closure-library/closure/goog/module/loader.js +0 -269
  930. data/closure-library/closure/goog/module/module.js +0 -166
  931. data/closure-library/closure/goog/module/moduleinfo.js +0 -336
  932. data/closure-library/closure/goog/module/moduleinfo_test.html +0 -109
  933. data/closure-library/closure/goog/module/moduleloadcallback.js +0 -84
  934. data/closure-library/closure/goog/module/moduleloadcallback_test.html +0 -57
  935. data/closure-library/closure/goog/module/moduleloader.js +0 -250
  936. data/closure-library/closure/goog/module/moduleloader_test.html +0 -244
  937. data/closure-library/closure/goog/module/modulemanager.js +0 -1008
  938. data/closure-library/closure/goog/module/modulemanager_test.html +0 -1240
  939. data/closure-library/closure/goog/module/testdata/modA_1.js +0 -22
  940. data/closure-library/closure/goog/module/testdata/modA_2.js +0 -24
  941. data/closure-library/closure/goog/module/testdata/modB_1.js +0 -24
  942. data/closure-library/closure/goog/net/browserchannel.js +0 -2441
  943. data/closure-library/closure/goog/net/browserchannel_test.html +0 -1176
  944. data/closure-library/closure/goog/net/browsertestchannel.js +0 -552
  945. data/closure-library/closure/goog/net/bulkloader.js +0 -174
  946. data/closure-library/closure/goog/net/bulkloader_test.html +0 -232
  947. data/closure-library/closure/goog/net/bulkloaderhelper.js +0 -129
  948. data/closure-library/closure/goog/net/channeldebug.js +0 -288
  949. data/closure-library/closure/goog/net/channelrequest.js +0 -1125
  950. data/closure-library/closure/goog/net/channelrequest_test.html +0 -158
  951. data/closure-library/closure/goog/net/cookies.js +0 -401
  952. data/closure-library/closure/goog/net/cookies_test.html +0 -255
  953. data/closure-library/closure/goog/net/crossdomainrpc.js +0 -848
  954. data/closure-library/closure/goog/net/crossdomainrpc_test.gif +0 -0
  955. data/closure-library/closure/goog/net/crossdomainrpc_test.html +0 -120
  956. data/closure-library/closure/goog/net/crossdomainrpc_test_response.html +0 -59
  957. data/closure-library/closure/goog/net/errorcode.js +0 -130
  958. data/closure-library/closure/goog/net/eventtype.js +0 -37
  959. data/closure-library/closure/goog/net/iframe_xhr_test.html +0 -142
  960. data/closure-library/closure/goog/net/iframe_xhr_test_response.html +0 -17
  961. data/closure-library/closure/goog/net/iframeio.js +0 -1342
  962. data/closure-library/closure/goog/net/iframeio_different_base_test.data +0 -2
  963. data/closure-library/closure/goog/net/iframeio_different_base_test.html +0 -42
  964. data/closure-library/closure/goog/net/iframeio_test.html +0 -368
  965. data/closure-library/closure/goog/net/iframeloadmonitor.js +0 -199
  966. data/closure-library/closure/goog/net/iframeloadmonitor_test.html +0 -113
  967. data/closure-library/closure/goog/net/iframeloadmonitor_test_frame.html +0 -12
  968. data/closure-library/closure/goog/net/iframeloadmonitor_test_frame2.html +0 -12
  969. data/closure-library/closure/goog/net/iframeloadmonitor_test_frame3.html +0 -12
  970. data/closure-library/closure/goog/net/imageloader.js +0 -237
  971. data/closure-library/closure/goog/net/imageloader_test.html +0 -200
  972. data/closure-library/closure/goog/net/imageloader_testimg1.gif +0 -0
  973. data/closure-library/closure/goog/net/imageloader_testimg2.gif +0 -0
  974. data/closure-library/closure/goog/net/imageloader_testimg3.gif +0 -0
  975. data/closure-library/closure/goog/net/jsonp.js +0 -379
  976. data/closure-library/closure/goog/net/jsonp_test.html +0 -328
  977. data/closure-library/closure/goog/net/mockiframeio.js +0 -318
  978. data/closure-library/closure/goog/net/mockxhrlite.js +0 -34
  979. data/closure-library/closure/goog/net/mockxhrlite_test.html +0 -109
  980. data/closure-library/closure/goog/net/multiiframeloadmonitor.js +0 -116
  981. data/closure-library/closure/goog/net/multiiframeloadmonitor_test.html +0 -172
  982. data/closure-library/closure/goog/net/networktester.js +0 -383
  983. data/closure-library/closure/goog/net/networktester_test.html +0 -227
  984. data/closure-library/closure/goog/net/tmpnetwork.js +0 -168
  985. data/closure-library/closure/goog/net/wrapperxmlhttpfactory.js +0 -68
  986. data/closure-library/closure/goog/net/xhrio.js +0 -1093
  987. data/closure-library/closure/goog/net/xhrio_test.html +0 -603
  988. data/closure-library/closure/goog/net/xhriopool.js +0 -87
  989. data/closure-library/closure/goog/net/xhrlite.js +0 -119
  990. data/closure-library/closure/goog/net/xhrlite_test.html +0 -156
  991. data/closure-library/closure/goog/net/xhrlitepool.js +0 -37
  992. data/closure-library/closure/goog/net/xhrmanager.js +0 -763
  993. data/closure-library/closure/goog/net/xhrmonitor.js +0 -254
  994. data/closure-library/closure/goog/net/xhrmonitor_test.html +0 -199
  995. data/closure-library/closure/goog/net/xmlhttp.js +0 -215
  996. data/closure-library/closure/goog/net/xmlhttpfactory.js +0 -64
  997. data/closure-library/closure/goog/net/xpc/crosspagechannel.js +0 -624
  998. data/closure-library/closure/goog/net/xpc/crosspagechannel_test.html +0 -422
  999. data/closure-library/closure/goog/net/xpc/frameelementmethodtransport.js +0 -251
  1000. data/closure-library/closure/goog/net/xpc/iframepollingtransport.js +0 -822
  1001. data/closure-library/closure/goog/net/xpc/iframerelaytransport.js +0 -288
  1002. data/closure-library/closure/goog/net/xpc/nativemessagingtransport.js +0 -280
  1003. data/closure-library/closure/goog/net/xpc/nativemessagingtransport_test.html +0 -164
  1004. data/closure-library/closure/goog/net/xpc/nixtransport.js +0 -454
  1005. data/closure-library/closure/goog/net/xpc/relay.js +0 -72
  1006. data/closure-library/closure/goog/net/xpc/testdata/inner_peer.html +0 -106
  1007. data/closure-library/closure/goog/net/xpc/transport.js +0 -104
  1008. data/closure-library/closure/goog/net/xpc/xpc.js +0 -238
  1009. data/closure-library/closure/goog/object/object.js +0 -553
  1010. data/closure-library/closure/goog/object/object_test.html +0 -376
  1011. data/closure-library/closure/goog/positioning/absoluteposition.js +0 -73
  1012. data/closure-library/closure/goog/positioning/abstractposition.js +0 -47
  1013. data/closure-library/closure/goog/positioning/anchoredposition.js +0 -78
  1014. data/closure-library/closure/goog/positioning/anchoredviewportposition.js +0 -126
  1015. data/closure-library/closure/goog/positioning/anchoredviewportposition_test.html +0 -117
  1016. data/closure-library/closure/goog/positioning/anchoredviewportposition_test_iframe.html +0 -35
  1017. data/closure-library/closure/goog/positioning/clientposition.js +0 -75
  1018. data/closure-library/closure/goog/positioning/menuanchoredposition.js +0 -97
  1019. data/closure-library/closure/goog/positioning/positioning.js +0 -476
  1020. data/closure-library/closure/goog/positioning/positioning_test.html +0 -877
  1021. data/closure-library/closure/goog/positioning/positioning_test_iframe1.html +0 -16
  1022. data/closure-library/closure/goog/positioning/positioning_test_iframe2.html +0 -13
  1023. data/closure-library/closure/goog/positioning/positioning_test_quirk.html +0 -9
  1024. data/closure-library/closure/goog/positioning/positioning_test_standard.html +0 -13
  1025. data/closure-library/closure/goog/positioning/viewportclientposition.js +0 -102
  1026. data/closure-library/closure/goog/positioning/viewportclientposition_test.html +0 -172
  1027. data/closure-library/closure/goog/positioning/viewportposition.js +0 -63
  1028. data/closure-library/closure/goog/proto/proto.js +0 -43
  1029. data/closure-library/closure/goog/proto/serializer.js +0 -68
  1030. data/closure-library/closure/goog/proto/serializer_test.html +0 -43
  1031. data/closure-library/closure/goog/proto2/descriptor.js +0 -198
  1032. data/closure-library/closure/goog/proto2/descriptor_test.html +0 -60
  1033. data/closure-library/closure/goog/proto2/fielddescriptor.js +0 -288
  1034. data/closure-library/closure/goog/proto2/fielddescriptor_test.html +0 -124
  1035. data/closure-library/closure/goog/proto2/lazydeserializer.js +0 -69
  1036. data/closure-library/closure/goog/proto2/message.js +0 -726
  1037. data/closure-library/closure/goog/proto2/message_test.html +0 -356
  1038. data/closure-library/closure/goog/proto2/objectserializer.js +0 -159
  1039. data/closure-library/closure/goog/proto2/objectserializer_test.html +0 -423
  1040. data/closure-library/closure/goog/proto2/package_test.pb.js +0 -164
  1041. data/closure-library/closure/goog/proto2/pbliteserializer.js +0 -150
  1042. data/closure-library/closure/goog/proto2/pbliteserializer_test.html +0 -267
  1043. data/closure-library/closure/goog/proto2/proto_test.html +0 -693
  1044. data/closure-library/closure/goog/proto2/serializer.js +0 -148
  1045. data/closure-library/closure/goog/proto2/test.pb.js +0 -2820
  1046. data/closure-library/closure/goog/proto2/util.js +0 -54
  1047. data/closure-library/closure/goog/pubsub/pubsub.js +0 -326
  1048. data/closure-library/closure/goog/pubsub/pubsub_test.html +0 -635
  1049. data/closure-library/closure/goog/reflect/reflect.js +0 -50
  1050. data/closure-library/closure/goog/spell/spellcheck.js +0 -474
  1051. data/closure-library/closure/goog/spell/spellcheck_test.html +0 -112
  1052. data/closure-library/closure/goog/string/path.js +0 -100
  1053. data/closure-library/closure/goog/string/path_test.html +0 -59
  1054. data/closure-library/closure/goog/string/string.js +0 -1207
  1055. data/closure-library/closure/goog/string/string_test.html +0 -877
  1056. data/closure-library/closure/goog/string/stringbuffer.js +0 -167
  1057. data/closure-library/closure/goog/string/stringbuffer_test.html +0 -101
  1058. data/closure-library/closure/goog/string/stringformat.js +0 -247
  1059. data/closure-library/closure/goog/string/stringformat_test.html +0 -211
  1060. data/closure-library/closure/goog/structs/avltree.js +0 -769
  1061. data/closure-library/closure/goog/structs/avltree_test.html +0 -241
  1062. data/closure-library/closure/goog/structs/circularbuffer.js +0 -219
  1063. data/closure-library/closure/goog/structs/circularbuffer_test.html +0 -105
  1064. data/closure-library/closure/goog/structs/heap.js +0 -332
  1065. data/closure-library/closure/goog/structs/heap_test.html +0 -220
  1066. data/closure-library/closure/goog/structs/inversionmap.js +0 -159
  1067. data/closure-library/closure/goog/structs/inversionmap_test.html +0 -157
  1068. data/closure-library/closure/goog/structs/linkedmap.js +0 -472
  1069. data/closure-library/closure/goog/structs/linkedmap_test.html +0 -300
  1070. data/closure-library/closure/goog/structs/map.js +0 -446
  1071. data/closure-library/closure/goog/structs/map_test.html +0 -430
  1072. data/closure-library/closure/goog/structs/node.js +0 -74
  1073. data/closure-library/closure/goog/structs/pool.js +0 -344
  1074. data/closure-library/closure/goog/structs/pool_test.html +0 -265
  1075. data/closure-library/closure/goog/structs/prioritypool.js +0 -147
  1076. data/closure-library/closure/goog/structs/prioritypool_test.html +0 -478
  1077. data/closure-library/closure/goog/structs/priorityqueue.js +0 -64
  1078. data/closure-library/closure/goog/structs/priorityqueue_test.html +0 -179
  1079. data/closure-library/closure/goog/structs/quadtree.js +0 -571
  1080. data/closure-library/closure/goog/structs/quadtree_test.html +0 -179
  1081. data/closure-library/closure/goog/structs/queue.js +0 -157
  1082. data/closure-library/closure/goog/structs/queue_test.html +0 -140
  1083. data/closure-library/closure/goog/structs/set.js +0 -251
  1084. data/closure-library/closure/goog/structs/set_test.html +0 -551
  1085. data/closure-library/closure/goog/structs/simplepool.js +0 -203
  1086. data/closure-library/closure/goog/structs/stringset.js +0 -404
  1087. data/closure-library/closure/goog/structs/stringset_test.html +0 -251
  1088. data/closure-library/closure/goog/structs/structs.js +0 -341
  1089. data/closure-library/closure/goog/structs/structs_test.html +0 -1050
  1090. data/closure-library/closure/goog/structs/treenode.js +0 -312
  1091. data/closure-library/closure/goog/structs/treenode_test.html +0 -285
  1092. data/closure-library/closure/goog/structs/trie.js +0 -368
  1093. data/closure-library/closure/goog/structs/trie_test.html +0 -378
  1094. data/closure-library/closure/goog/style/cursor.js +0 -125
  1095. data/closure-library/closure/goog/style/cursor_test.html +0 -131
  1096. data/closure-library/closure/goog/style/style.js +0 -1804
  1097. data/closure-library/closure/goog/style/style_quirks_test.html +0 -1928
  1098. data/closure-library/closure/goog/style/style_test.html +0 -2073
  1099. data/closure-library/closure/goog/style/style_test_iframe_quirk.html +0 -29
  1100. data/closure-library/closure/goog/style/style_test_iframe_standard.html +0 -30
  1101. data/closure-library/closure/goog/style/style_test_quirk.html +0 -9
  1102. data/closure-library/closure/goog/style/style_test_standard.html +0 -11
  1103. data/closure-library/closure/goog/testing/asserts.js +0 -970
  1104. data/closure-library/closure/goog/testing/asserts_test.html +0 -966
  1105. data/closure-library/closure/goog/testing/async/mockcontrol.js +0 -174
  1106. data/closure-library/closure/goog/testing/async/mockcontrol_test.html +0 -224
  1107. data/closure-library/closure/goog/testing/asynctestcase.js +0 -812
  1108. data/closure-library/closure/goog/testing/asynctestcase_async_test.html +0 -102
  1109. data/closure-library/closure/goog/testing/asynctestcase_noasync_test.html +0 -98
  1110. data/closure-library/closure/goog/testing/benchmark.js +0 -87
  1111. data/closure-library/closure/goog/testing/benchmarks/jsbinarysizebutton.js +0 -64
  1112. data/closure-library/closure/goog/testing/benchmarks/jsbinarysizebutton_test.html +0 -58
  1113. data/closure-library/closure/goog/testing/benchmarks/jsbinarysizetoolbar.js +0 -66
  1114. data/closure-library/closure/goog/testing/benchmarks/jsbinarysizetoolbar_test.html +0 -49
  1115. data/closure-library/closure/goog/testing/continuationtestcase.js +0 -682
  1116. data/closure-library/closure/goog/testing/continuationtestcase_test.html +0 -349
  1117. data/closure-library/closure/goog/testing/deferredtestcase.js +0 -157
  1118. data/closure-library/closure/goog/testing/deferredtestcase_test.html +0 -152
  1119. data/closure-library/closure/goog/testing/dom.js +0 -596
  1120. data/closure-library/closure/goog/testing/dom_test.html +0 -438
  1121. data/closure-library/closure/goog/testing/editor/dom.js +0 -293
  1122. data/closure-library/closure/goog/testing/editor/dom_test.html +0 -295
  1123. data/closure-library/closure/goog/testing/editor/fieldmock.js +0 -90
  1124. data/closure-library/closure/goog/testing/editor/testhelper.js +0 -168
  1125. data/closure-library/closure/goog/testing/editor/testhelper_test.html +0 -176
  1126. data/closure-library/closure/goog/testing/events/eventobserver.js +0 -85
  1127. data/closure-library/closure/goog/testing/events/eventobserver_test.html +0 -70
  1128. data/closure-library/closure/goog/testing/events/events.js +0 -540
  1129. data/closure-library/closure/goog/testing/events/events_test.html +0 -434
  1130. data/closure-library/closure/goog/testing/events/matchers.js +0 -41
  1131. data/closure-library/closure/goog/testing/events/matchers_test.html +0 -40
  1132. data/closure-library/closure/goog/testing/expectedfailures.js +0 -236
  1133. data/closure-library/closure/goog/testing/expectedfailures_test.html +0 -122
  1134. data/closure-library/closure/goog/testing/fs/blob.js +0 -74
  1135. data/closure-library/closure/goog/testing/fs/blob_test.html +0 -53
  1136. data/closure-library/closure/goog/testing/fs/directoryentry_test.html +0 -185
  1137. data/closure-library/closure/goog/testing/fs/entry.js +0 -511
  1138. data/closure-library/closure/goog/testing/fs/entry_test.html +0 -153
  1139. data/closure-library/closure/goog/testing/fs/file.js +0 -51
  1140. data/closure-library/closure/goog/testing/fs/fileentry_test.html +0 -54
  1141. data/closure-library/closure/goog/testing/fs/filesystem.js +0 -64
  1142. data/closure-library/closure/goog/testing/fs/filewriter.js +0 -314
  1143. data/closure-library/closure/goog/testing/fs/filewriter_test.html +0 -248
  1144. data/closure-library/closure/goog/testing/fs/fs.js +0 -146
  1145. data/closure-library/closure/goog/testing/fs/fs_test.html +0 -54
  1146. data/closure-library/closure/goog/testing/fs/integration_test.html +0 -219
  1147. data/closure-library/closure/goog/testing/functionmock.js +0 -157
  1148. data/closure-library/closure/goog/testing/functionmock_test.html +0 -357
  1149. data/closure-library/closure/goog/testing/graphics.js +0 -64
  1150. data/closure-library/closure/goog/testing/jsunit.js +0 -144
  1151. data/closure-library/closure/goog/testing/loosemock.js +0 -240
  1152. data/closure-library/closure/goog/testing/loosemock_test.html +0 -343
  1153. data/closure-library/closure/goog/testing/messaging/mockmessagechannel.js +0 -77
  1154. data/closure-library/closure/goog/testing/messaging/mockmessageevent.js +0 -100
  1155. data/closure-library/closure/goog/testing/messaging/mockmessageport.js +0 -85
  1156. data/closure-library/closure/goog/testing/messaging/mockportnetwork.js +0 -64
  1157. data/closure-library/closure/goog/testing/mock.js +0 -556
  1158. data/closure-library/closure/goog/testing/mock_test.html +0 -208
  1159. data/closure-library/closure/goog/testing/mockclassfactory.js +0 -580
  1160. data/closure-library/closure/goog/testing/mockclassfactory_test.html +0 -241
  1161. data/closure-library/closure/goog/testing/mockclock.js +0 -395
  1162. data/closure-library/closure/goog/testing/mockclock_test.html +0 -413
  1163. data/closure-library/closure/goog/testing/mockcontrol.js +0 -210
  1164. data/closure-library/closure/goog/testing/mockcontrol_test.html +0 -127
  1165. data/closure-library/closure/goog/testing/mockinterface.js +0 -45
  1166. data/closure-library/closure/goog/testing/mockmatchers.js +0 -395
  1167. data/closure-library/closure/goog/testing/mockmatchers_test.html +0 -388
  1168. data/closure-library/closure/goog/testing/mockrandom.js +0 -128
  1169. data/closure-library/closure/goog/testing/mockrandom_test.html +0 -56
  1170. data/closure-library/closure/goog/testing/mockrange.js +0 -65
  1171. data/closure-library/closure/goog/testing/mockrange_test.html +0 -41
  1172. data/closure-library/closure/goog/testing/mockuseragent.js +0 -143
  1173. data/closure-library/closure/goog/testing/mockuseragent_test.html +0 -59
  1174. data/closure-library/closure/goog/testing/multitestrunner.js +0 -1442
  1175. data/closure-library/closure/goog/testing/net/xhrio.js +0 -595
  1176. data/closure-library/closure/goog/testing/net/xhrio_test.html +0 -321
  1177. data/closure-library/closure/goog/testing/objectpropertystring.js +0 -67
  1178. data/closure-library/closure/goog/testing/performancetable.css +0 -46
  1179. data/closure-library/closure/goog/testing/performancetable.js +0 -162
  1180. data/closure-library/closure/goog/testing/performancetimer.js +0 -166
  1181. data/closure-library/closure/goog/testing/performancetimer_test.html +0 -107
  1182. data/closure-library/closure/goog/testing/propertyreplacer.js +0 -243
  1183. data/closure-library/closure/goog/testing/propertyreplacer_test.html +0 -368
  1184. data/closure-library/closure/goog/testing/pseudorandom.js +0 -162
  1185. data/closure-library/closure/goog/testing/pseudorandom_test.html +0 -98
  1186. data/closure-library/closure/goog/testing/recordfunction.js +0 -194
  1187. data/closure-library/closure/goog/testing/recordfunction_test.html +0 -147
  1188. data/closure-library/closure/goog/testing/singleton.js +0 -82
  1189. data/closure-library/closure/goog/testing/singleton_test.html +0 -39
  1190. data/closure-library/closure/goog/testing/stacktrace.js +0 -470
  1191. data/closure-library/closure/goog/testing/stacktrace_test.html +0 -229
  1192. data/closure-library/closure/goog/testing/strictmock.js +0 -124
  1193. data/closure-library/closure/goog/testing/strictmock_test.html +0 -368
  1194. data/closure-library/closure/goog/testing/style/layoutasserts.js +0 -368
  1195. data/closure-library/closure/goog/testing/style/layoutasserts_test.html +0 -269
  1196. data/closure-library/closure/goog/testing/testcase.js +0 -1053
  1197. data/closure-library/closure/goog/testing/testqueue.js +0 -66
  1198. data/closure-library/closure/goog/testing/testrunner.js +0 -391
  1199. data/closure-library/closure/goog/testing/ui/rendererasserts.js +0 -50
  1200. data/closure-library/closure/goog/testing/ui/rendererasserts_test.html +0 -51
  1201. data/closure-library/closure/goog/testing/ui/rendererharness.js +0 -175
  1202. data/closure-library/closure/goog/testing/ui/style.js +0 -137
  1203. data/closure-library/closure/goog/testing/ui/style_reference.html +0 -27
  1204. data/closure-library/closure/goog/testing/ui/style_test.html +0 -130
  1205. data/closure-library/closure/goog/timer/timer.js +0 -285
  1206. data/closure-library/closure/goog/timer/timer_test.html +0 -118
  1207. data/closure-library/closure/goog/tweak/entries.js +0 -990
  1208. data/closure-library/closure/goog/tweak/entries_test.html +0 -94
  1209. data/closure-library/closure/goog/tweak/registry.js +0 -310
  1210. data/closure-library/closure/goog/tweak/registry_test.html +0 -144
  1211. data/closure-library/closure/goog/tweak/testhelpers.js +0 -111
  1212. data/closure-library/closure/goog/tweak/tweak.js +0 -318
  1213. data/closure-library/closure/goog/tweak/tweakui.js +0 -817
  1214. data/closure-library/closure/goog/tweak/tweakui_test.html +0 -280
  1215. data/closure-library/closure/goog/ui/abstractspellchecker.js +0 -1069
  1216. data/closure-library/closure/goog/ui/activitymonitor.js +0 -286
  1217. data/closure-library/closure/goog/ui/activitymonitor_test.html +0 -44
  1218. data/closure-library/closure/goog/ui/advancedtooltip.js +0 -368
  1219. data/closure-library/closure/goog/ui/advancedtooltip_test.html +0 -274
  1220. data/closure-library/closure/goog/ui/animatedzippy.js +0 -190
  1221. data/closure-library/closure/goog/ui/attachablemenu.js +0 -464
  1222. data/closure-library/closure/goog/ui/autocomplete/arraymatcher.js +0 -156
  1223. data/closure-library/closure/goog/ui/autocomplete/arraymatcher_test.html +0 -130
  1224. data/closure-library/closure/goog/ui/autocomplete/autocomplete.js +0 -627
  1225. data/closure-library/closure/goog/ui/autocomplete/autocomplete_test.html +0 -537
  1226. data/closure-library/closure/goog/ui/autocomplete/basic.js +0 -53
  1227. data/closure-library/closure/goog/ui/autocomplete/basic_test.html +0 -204
  1228. data/closure-library/closure/goog/ui/autocomplete/inputhandler.js +0 -1209
  1229. data/closure-library/closure/goog/ui/autocomplete/inputhandler_test.html +0 -555
  1230. data/closure-library/closure/goog/ui/autocomplete/remote.js +0 -117
  1231. data/closure-library/closure/goog/ui/autocomplete/remotearraymatcher.js +0 -273
  1232. data/closure-library/closure/goog/ui/autocomplete/remotearraymatcher_test.html +0 -73
  1233. data/closure-library/closure/goog/ui/autocomplete/renderer.js +0 -852
  1234. data/closure-library/closure/goog/ui/autocomplete/renderer_test.html +0 -386
  1235. data/closure-library/closure/goog/ui/autocomplete/richinputhandler.js +0 -59
  1236. data/closure-library/closure/goog/ui/autocomplete/richremote.js +0 -108
  1237. data/closure-library/closure/goog/ui/autocomplete/richremotearraymatcher.js +0 -126
  1238. data/closure-library/closure/goog/ui/basicmenu.js +0 -930
  1239. data/closure-library/closure/goog/ui/bidiinput.js +0 -164
  1240. data/closure-library/closure/goog/ui/bubble.js +0 -475
  1241. data/closure-library/closure/goog/ui/button.js +0 -208
  1242. data/closure-library/closure/goog/ui/button_test.html +0 -257
  1243. data/closure-library/closure/goog/ui/buttonrenderer.js +0 -205
  1244. data/closure-library/closure/goog/ui/buttonrenderer_test.html +0 -190
  1245. data/closure-library/closure/goog/ui/buttonside.js +0 -40
  1246. data/closure-library/closure/goog/ui/cccbutton.js +0 -281
  1247. data/closure-library/closure/goog/ui/charcounter.js +0 -200
  1248. data/closure-library/closure/goog/ui/charpicker.js +0 -807
  1249. data/closure-library/closure/goog/ui/checkbox.js +0 -303
  1250. data/closure-library/closure/goog/ui/checkbox_test.html +0 -224
  1251. data/closure-library/closure/goog/ui/checkboxmenuitem.js +0 -53
  1252. data/closure-library/closure/goog/ui/colorbutton.js +0 -58
  1253. data/closure-library/closure/goog/ui/colorbutton_test.html +0 -70
  1254. data/closure-library/closure/goog/ui/colorbuttonrenderer.js +0 -72
  1255. data/closure-library/closure/goog/ui/colormenubutton.js +0 -213
  1256. data/closure-library/closure/goog/ui/colormenubuttonrenderer.js +0 -144
  1257. data/closure-library/closure/goog/ui/colormenubuttonrenderer_test.html +0 -88
  1258. data/closure-library/closure/goog/ui/colorpalette.js +0 -162
  1259. data/closure-library/closure/goog/ui/colorpalette_test.html +0 -169
  1260. data/closure-library/closure/goog/ui/colorpicker.js +0 -344
  1261. data/closure-library/closure/goog/ui/colorsplitbehavior.js +0 -61
  1262. data/closure-library/closure/goog/ui/combobox.js +0 -894
  1263. data/closure-library/closure/goog/ui/combobox_test.html +0 -208
  1264. data/closure-library/closure/goog/ui/component.js +0 -1187
  1265. data/closure-library/closure/goog/ui/component_test.html +0 -723
  1266. data/closure-library/closure/goog/ui/container.js +0 -1296
  1267. data/closure-library/closure/goog/ui/container_test.html +0 -450
  1268. data/closure-library/closure/goog/ui/containerrenderer.js +0 -370
  1269. data/closure-library/closure/goog/ui/containerrenderer_test.html +0 -227
  1270. data/closure-library/closure/goog/ui/containerscroller.js +0 -221
  1271. data/closure-library/closure/goog/ui/containerscroller_test.html +0 -213
  1272. data/closure-library/closure/goog/ui/control.js +0 -1348
  1273. data/closure-library/closure/goog/ui/control_test.html +0 -2128
  1274. data/closure-library/closure/goog/ui/controlcontent.js +0 -28
  1275. data/closure-library/closure/goog/ui/controlrenderer.js +0 -808
  1276. data/closure-library/closure/goog/ui/controlrenderer_test.html +0 -840
  1277. data/closure-library/closure/goog/ui/cookieeditor.js +0 -182
  1278. data/closure-library/closure/goog/ui/cookieeditor_test.html +0 -102
  1279. data/closure-library/closure/goog/ui/css3buttonrenderer.js +0 -147
  1280. data/closure-library/closure/goog/ui/css3menubuttonrenderer.js +0 -144
  1281. data/closure-library/closure/goog/ui/cssnames.js +0 -28
  1282. data/closure-library/closure/goog/ui/custombutton.js +0 -58
  1283. data/closure-library/closure/goog/ui/custombuttonrenderer.js +0 -254
  1284. data/closure-library/closure/goog/ui/customcolorpalette.js +0 -137
  1285. data/closure-library/closure/goog/ui/customcolorpalette_test.html +0 -60
  1286. data/closure-library/closure/goog/ui/datepicker.js +0 -1339
  1287. data/closure-library/closure/goog/ui/datepicker_test.html +0 -190
  1288. data/closure-library/closure/goog/ui/decorate.js +0 -37
  1289. data/closure-library/closure/goog/ui/decorate_test.html +0 -113
  1290. data/closure-library/closure/goog/ui/deprecatedbutton.js +0 -381
  1291. data/closure-library/closure/goog/ui/dialog.js +0 -1776
  1292. data/closure-library/closure/goog/ui/dialog_test.html +0 -493
  1293. data/closure-library/closure/goog/ui/dimensionpicker.js +0 -289
  1294. data/closure-library/closure/goog/ui/dimensionpicker_test.html +0 -128
  1295. data/closure-library/closure/goog/ui/dimensionpickerrenderer.js +0 -387
  1296. data/closure-library/closure/goog/ui/dragdropdetector.js +0 -642
  1297. data/closure-library/closure/goog/ui/drilldownrow.js +0 -494
  1298. data/closure-library/closure/goog/ui/editor/abstractdialog.js +0 -443
  1299. data/closure-library/closure/goog/ui/editor/abstractdialog_test.html +0 -467
  1300. data/closure-library/closure/goog/ui/editor/bubble.js +0 -520
  1301. data/closure-library/closure/goog/ui/editor/bubble_test.html +0 -264
  1302. data/closure-library/closure/goog/ui/editor/defaulttoolbar.js +0 -1062
  1303. data/closure-library/closure/goog/ui/editor/linkdialog.js +0 -833
  1304. data/closure-library/closure/goog/ui/editor/linkdialog_test.html +0 -449
  1305. data/closure-library/closure/goog/ui/editor/messages.js +0 -115
  1306. data/closure-library/closure/goog/ui/editor/tabpane.js +0 -183
  1307. data/closure-library/closure/goog/ui/editor/toolbarcontroller.js +0 -293
  1308. data/closure-library/closure/goog/ui/editor/toolbarfactory.js +0 -437
  1309. data/closure-library/closure/goog/ui/editor/toolbarfactory_test.html +0 -73
  1310. data/closure-library/closure/goog/ui/emoji/emoji.js +0 -72
  1311. data/closure-library/closure/goog/ui/emoji/emojipalette.js +0 -298
  1312. data/closure-library/closure/goog/ui/emoji/emojipaletterenderer.js +0 -206
  1313. data/closure-library/closure/goog/ui/emoji/emojipicker.js +0 -797
  1314. data/closure-library/closure/goog/ui/emoji/emojipicker_test.html +0 -840
  1315. data/closure-library/closure/goog/ui/emoji/fast_nonprogressive_emojipicker_test.html +0 -256
  1316. data/closure-library/closure/goog/ui/emoji/fast_progressive_emojipicker_test.html +0 -256
  1317. data/closure-library/closure/goog/ui/emoji/popupemojipicker.js +0 -410
  1318. data/closure-library/closure/goog/ui/emoji/popupemojipicker_test.html +0 -80
  1319. data/closure-library/closure/goog/ui/emoji/progressiveemojipaletterenderer.js +0 -97
  1320. data/closure-library/closure/goog/ui/emoji/spriteinfo.js +0 -212
  1321. data/closure-library/closure/goog/ui/emoji/spriteinfo_test.html +0 -51
  1322. data/closure-library/closure/goog/ui/filteredmenu.js +0 -562
  1323. data/closure-library/closure/goog/ui/filteredmenu_test.html +0 -299
  1324. data/closure-library/closure/goog/ui/filterobservingmenuitem.js +0 -97
  1325. data/closure-library/closure/goog/ui/filterobservingmenuitemrenderer.js +0 -60
  1326. data/closure-library/closure/goog/ui/flatbuttonrenderer.js +0 -138
  1327. data/closure-library/closure/goog/ui/flatmenubuttonrenderer.js +0 -199
  1328. data/closure-library/closure/goog/ui/formpost.js +0 -109
  1329. data/closure-library/closure/goog/ui/formpost_test.html +0 -109
  1330. data/closure-library/closure/goog/ui/gauge.js +0 -999
  1331. data/closure-library/closure/goog/ui/gaugetheme.js +0 -169
  1332. data/closure-library/closure/goog/ui/hovercard.js +0 -447
  1333. data/closure-library/closure/goog/ui/hovercard_test.html +0 -343
  1334. data/closure-library/closure/goog/ui/hsvapalette.js +0 -311
  1335. data/closure-library/closure/goog/ui/hsvapalette_test.html +0 -152
  1336. data/closure-library/closure/goog/ui/hsvpalette.js +0 -470
  1337. data/closure-library/closure/goog/ui/hsvpalette_test.html +0 -202
  1338. data/closure-library/closure/goog/ui/idgenerator.js +0 -57
  1339. data/closure-library/closure/goog/ui/idletimer.js +0 -299
  1340. data/closure-library/closure/goog/ui/idletimer_test.html +0 -100
  1341. data/closure-library/closure/goog/ui/iframemask.js +0 -256
  1342. data/closure-library/closure/goog/ui/iframemask_test.html +0 -230
  1343. data/closure-library/closure/goog/ui/imagelessbuttonrenderer.js +0 -204
  1344. data/closure-library/closure/goog/ui/imagelessmenubuttonrenderer.js +0 -202
  1345. data/closure-library/closure/goog/ui/imagelessroundedcorner.js +0 -971
  1346. data/closure-library/closure/goog/ui/inputdatepicker.js +0 -306
  1347. data/closure-library/closure/goog/ui/inputdatepicker_test.html +0 -109
  1348. data/closure-library/closure/goog/ui/itemevent.js +0 -50
  1349. data/closure-library/closure/goog/ui/keyboardshortcuthandler.js +0 -981
  1350. data/closure-library/closure/goog/ui/keyboardshortcuthandler_test.html +0 -671
  1351. data/closure-library/closure/goog/ui/labelinput.js +0 -439
  1352. data/closure-library/closure/goog/ui/linkbuttonrenderer.js +0 -67
  1353. data/closure-library/closure/goog/ui/media/flashobject.js +0 -629
  1354. data/closure-library/closure/goog/ui/media/flashobject_test.html +0 -236
  1355. data/closure-library/closure/goog/ui/media/flickr.js +0 -309
  1356. data/closure-library/closure/goog/ui/media/flickr_test.html +0 -90
  1357. data/closure-library/closure/goog/ui/media/media.js +0 -284
  1358. data/closure-library/closure/goog/ui/media/media_test.html +0 -161
  1359. data/closure-library/closure/goog/ui/media/mediamodel.js +0 -840
  1360. data/closure-library/closure/goog/ui/media/mp3.js +0 -225
  1361. data/closure-library/closure/goog/ui/media/mp3_test.html +0 -78
  1362. data/closure-library/closure/goog/ui/media/photo.js +0 -139
  1363. data/closure-library/closure/goog/ui/media/photo_test.html +0 -62
  1364. data/closure-library/closure/goog/ui/media/picasa.js +0 -317
  1365. data/closure-library/closure/goog/ui/media/picasa_test.html +0 -131
  1366. data/closure-library/closure/goog/ui/media/vimeo.js +0 -264
  1367. data/closure-library/closure/goog/ui/media/vimeo_test.html +0 -79
  1368. data/closure-library/closure/goog/ui/media/youtube.js +0 -328
  1369. data/closure-library/closure/goog/ui/media/youtube_test.html +0 -185
  1370. data/closure-library/closure/goog/ui/menu.js +0 -435
  1371. data/closure-library/closure/goog/ui/menu_test.html +0 -129
  1372. data/closure-library/closure/goog/ui/menubase.js +0 -191
  1373. data/closure-library/closure/goog/ui/menubutton.js +0 -815
  1374. data/closure-library/closure/goog/ui/menubutton_test.html +0 -440
  1375. data/closure-library/closure/goog/ui/menubutton_test_frame.html +0 -41
  1376. data/closure-library/closure/goog/ui/menubuttonrenderer.js +0 -226
  1377. data/closure-library/closure/goog/ui/menubuttonrenderer_test.html +0 -161
  1378. data/closure-library/closure/goog/ui/menuheader.js +0 -62
  1379. data/closure-library/closure/goog/ui/menuheaderrenderer.js +0 -55
  1380. data/closure-library/closure/goog/ui/menuitem.js +0 -154
  1381. data/closure-library/closure/goog/ui/menuitem_test.html +0 -506
  1382. data/closure-library/closure/goog/ui/menuitemrenderer.js +0 -353
  1383. data/closure-library/closure/goog/ui/menuitemrenderer_test.html +0 -190
  1384. data/closure-library/closure/goog/ui/menurenderer.js +0 -118
  1385. data/closure-library/closure/goog/ui/menuseparator.js +0 -51
  1386. data/closure-library/closure/goog/ui/menuseparatorrenderer.js +0 -102
  1387. data/closure-library/closure/goog/ui/mockactivitymonitor.js +0 -54
  1388. data/closure-library/closure/goog/ui/nativebuttonrenderer.js +0 -205
  1389. data/closure-library/closure/goog/ui/nativebuttonrenderer_test.html +0 -213
  1390. data/closure-library/closure/goog/ui/offlineinstalldialog.js +0 -1086
  1391. data/closure-library/closure/goog/ui/offlinestatuscard.js +0 -580
  1392. data/closure-library/closure/goog/ui/offlinestatuscomponent.js +0 -545
  1393. data/closure-library/closure/goog/ui/option.js +0 -67
  1394. data/closure-library/closure/goog/ui/palette.js +0 -528
  1395. data/closure-library/closure/goog/ui/paletterenderer.js +0 -318
  1396. data/closure-library/closure/goog/ui/plaintextspellchecker.js +0 -668
  1397. data/closure-library/closure/goog/ui/plaintextspellchecker_test.html +0 -240
  1398. data/closure-library/closure/goog/ui/popup.js +0 -410
  1399. data/closure-library/closure/goog/ui/popup_test.html +0 -137
  1400. data/closure-library/closure/goog/ui/popupbase.js +0 -721
  1401. data/closure-library/closure/goog/ui/popupbase_test.html +0 -186
  1402. data/closure-library/closure/goog/ui/popupcolorpicker.js +0 -441
  1403. data/closure-library/closure/goog/ui/popupcolorpicker_test.html +0 -71
  1404. data/closure-library/closure/goog/ui/popupdatepicker.js +0 -273
  1405. data/closure-library/closure/goog/ui/popupmenu.js +0 -539
  1406. data/closure-library/closure/goog/ui/popupmenu_test.html +0 -197
  1407. data/closure-library/closure/goog/ui/progressbar.js +0 -390
  1408. data/closure-library/closure/goog/ui/prompt.js +0 -307
  1409. data/closure-library/closure/goog/ui/prompt_test.html +0 -65
  1410. data/closure-library/closure/goog/ui/rangemodel.js +0 -301
  1411. data/closure-library/closure/goog/ui/rangemodel_test.html +0 -270
  1412. data/closure-library/closure/goog/ui/ratings.js +0 -441
  1413. data/closure-library/closure/goog/ui/registry.js +0 -166
  1414. data/closure-library/closure/goog/ui/registry_test.html +0 -236
  1415. data/closure-library/closure/goog/ui/richtextspellchecker.js +0 -600
  1416. data/closure-library/closure/goog/ui/richtextspellchecker_test.html +0 -224
  1417. data/closure-library/closure/goog/ui/roundedcorners.js +0 -694
  1418. data/closure-library/closure/goog/ui/roundedpanel.js +0 -609
  1419. data/closure-library/closure/goog/ui/roundedpanel_test.html +0 -57
  1420. data/closure-library/closure/goog/ui/roundedtabrenderer.js +0 -196
  1421. data/closure-library/closure/goog/ui/scrollfloater.js +0 -394
  1422. data/closure-library/closure/goog/ui/scrollfloater_test.html +0 -46
  1423. data/closure-library/closure/goog/ui/select.js +0 -397
  1424. data/closure-library/closure/goog/ui/select_test.html +0 -152
  1425. data/closure-library/closure/goog/ui/selectionmenubutton.js +0 -277
  1426. data/closure-library/closure/goog/ui/selectionmenubutton_test.html +0 -237
  1427. data/closure-library/closure/goog/ui/selectionmodel.js +0 -291
  1428. data/closure-library/closure/goog/ui/separator.js +0 -74
  1429. data/closure-library/closure/goog/ui/serverchart.js +0 -1791
  1430. data/closure-library/closure/goog/ui/serverchart_test.html +0 -598
  1431. data/closure-library/closure/goog/ui/slider.js +0 -125
  1432. data/closure-library/closure/goog/ui/sliderbase.js +0 -1087
  1433. data/closure-library/closure/goog/ui/sliderbase_test.html +0 -198
  1434. data/closure-library/closure/goog/ui/splitbehavior.js +0 -348
  1435. data/closure-library/closure/goog/ui/splitbehavior_test.html +0 -161
  1436. data/closure-library/closure/goog/ui/splitpane.js +0 -844
  1437. data/closure-library/closure/goog/ui/splitpane_test.html +0 -143
  1438. data/closure-library/closure/goog/ui/style/app/buttonrenderer.js +0 -204
  1439. data/closure-library/closure/goog/ui/style/app/buttonrenderer_test.html +0 -155
  1440. data/closure-library/closure/goog/ui/style/app/menubuttonrenderer.js +0 -227
  1441. data/closure-library/closure/goog/ui/style/app/menubuttonrenderer_test.html +0 -167
  1442. data/closure-library/closure/goog/ui/style/app/primaryactionbuttonrenderer.js +0 -88
  1443. data/closure-library/closure/goog/ui/style/app/primaryactionbuttonrenderer_test.html +0 -76
  1444. data/closure-library/closure/goog/ui/submenu.js +0 -660
  1445. data/closure-library/closure/goog/ui/submenu_test.html +0 -446
  1446. data/closure-library/closure/goog/ui/submenurenderer.js +0 -188
  1447. data/closure-library/closure/goog/ui/tab.js +0 -102
  1448. data/closure-library/closure/goog/ui/tab_test.html +0 -61
  1449. data/closure-library/closure/goog/ui/tabbar.js +0 -393
  1450. data/closure-library/closure/goog/ui/tabbar_test.html +0 -611
  1451. data/closure-library/closure/goog/ui/tabbarrenderer.js +0 -173
  1452. data/closure-library/closure/goog/ui/tabbarrenderer_test.html +0 -137
  1453. data/closure-library/closure/goog/ui/tablesorter.js +0 -304
  1454. data/closure-library/closure/goog/ui/tablesorter_test.html +0 -127
  1455. data/closure-library/closure/goog/ui/tabpane.js +0 -674
  1456. data/closure-library/closure/goog/ui/tabpane_test.html +0 -107
  1457. data/closure-library/closure/goog/ui/tabrenderer.js +0 -152
  1458. data/closure-library/closure/goog/ui/tabrenderer_test.html +0 -132
  1459. data/closure-library/closure/goog/ui/textarea.js +0 -573
  1460. data/closure-library/closure/goog/ui/textarea_test.html +0 -305
  1461. data/closure-library/closure/goog/ui/textarearenderer.js +0 -167
  1462. data/closure-library/closure/goog/ui/togglebutton.js +0 -58
  1463. data/closure-library/closure/goog/ui/toolbar.js +0 -45
  1464. data/closure-library/closure/goog/ui/toolbarbutton.js +0 -54
  1465. data/closure-library/closure/goog/ui/toolbarbuttonrenderer.js +0 -55
  1466. data/closure-library/closure/goog/ui/toolbarcolormenubutton.js +0 -57
  1467. data/closure-library/closure/goog/ui/toolbarcolormenubuttonrenderer.js +0 -95
  1468. data/closure-library/closure/goog/ui/toolbarcolormenubuttonrenderer_test.html +0 -66
  1469. data/closure-library/closure/goog/ui/toolbarmenubutton.js +0 -56
  1470. data/closure-library/closure/goog/ui/toolbarmenubuttonrenderer.js +0 -55
  1471. data/closure-library/closure/goog/ui/toolbarrenderer.js +0 -95
  1472. data/closure-library/closure/goog/ui/toolbarselect.js +0 -55
  1473. data/closure-library/closure/goog/ui/toolbarseparator.js +0 -51
  1474. data/closure-library/closure/goog/ui/toolbarseparatorrenderer.js +0 -87
  1475. data/closure-library/closure/goog/ui/toolbartogglebutton.js +0 -53
  1476. data/closure-library/closure/goog/ui/tooltip.js +0 -975
  1477. data/closure-library/closure/goog/ui/tooltip_test.html +0 -351
  1478. data/closure-library/closure/goog/ui/tree/basenode.js +0 -1457
  1479. data/closure-library/closure/goog/ui/tree/basenode_test.html +0 -218
  1480. data/closure-library/closure/goog/ui/tree/treecontrol.js +0 -656
  1481. data/closure-library/closure/goog/ui/tree/treecontrol_test.html +0 -113
  1482. data/closure-library/closure/goog/ui/tree/treenode.js +0 -102
  1483. data/closure-library/closure/goog/ui/tree/typeahead.js +0 -332
  1484. data/closure-library/closure/goog/ui/tree/typeahead_test.html +0 -133
  1485. data/closure-library/closure/goog/ui/tristatemenuitem.js +0 -185
  1486. data/closure-library/closure/goog/ui/tristatemenuitemrenderer.js +0 -86
  1487. data/closure-library/closure/goog/ui/twothumbslider.js +0 -134
  1488. data/closure-library/closure/goog/ui/zippy.js +0 -277
  1489. data/closure-library/closure/goog/ui/zippy_test.html +0 -223
  1490. data/closure-library/closure/goog/uri/uri.js +0 -1595
  1491. data/closure-library/closure/goog/uri/uri_test.html +0 -837
  1492. data/closure-library/closure/goog/uri/utils.js +0 -972
  1493. data/closure-library/closure/goog/uri/utils_test.html +0 -521
  1494. data/closure-library/closure/goog/useragent/adobereader.js +0 -90
  1495. data/closure-library/closure/goog/useragent/adobereader_test.html +0 -34
  1496. data/closure-library/closure/goog/useragent/flash.js +0 -113
  1497. data/closure-library/closure/goog/useragent/flash_test.html +0 -34
  1498. data/closure-library/closure/goog/useragent/iphoto.js +0 -86
  1499. data/closure-library/closure/goog/useragent/jscript.js +0 -94
  1500. data/closure-library/closure/goog/useragent/jscript_test.html +0 -65
  1501. data/closure-library/closure/goog/useragent/picasa.js +0 -111
  1502. data/closure-library/closure/goog/useragent/platform.js +0 -70
  1503. data/closure-library/closure/goog/useragent/platform_test.html +0 -108
  1504. data/closure-library/closure/goog/useragent/product.js +0 -253
  1505. data/closure-library/closure/goog/useragent/product_isversion.js +0 -99
  1506. data/closure-library/closure/goog/useragent/product_test.html +0 -322
  1507. data/closure-library/closure/goog/useragent/useragent.js +0 -464
  1508. data/closure-library/closure/goog/useragent/useragent_test.html +0 -290
  1509. data/closure-library/closure/goog/window/window.js +0 -206
  1510. data/closure-library/closure/goog/window/window_test.html +0 -185
  1511. data/closure-library/third_party/closure/goog/base.js +0 -2
  1512. data/closure-library/third_party/closure/goog/caja/string/html/htmlparser.js +0 -611
  1513. data/closure-library/third_party/closure/goog/caja/string/html/htmlsanitizer.js +0 -605
  1514. data/closure-library/third_party/closure/goog/deps.js +0 -26
  1515. data/closure-library/third_party/closure/goog/dojo/dom/query.js +0 -1537
  1516. data/closure-library/third_party/closure/goog/dojo/dom/query_test.html +0 -63
  1517. data/closure-library/third_party/closure/goog/dojo/dom/query_test.js +0 -160
  1518. data/closure-library/third_party/closure/goog/jpeg_encoder/jpeg_encoder_basic.js +0 -751
  1519. data/closure-library/third_party/closure/goog/loremipsum/text/loremipsum.js +0 -712
  1520. data/closure-library/third_party/closure/goog/loremipsum/text/loremipsum_test.html +0 -61
  1521. data/closure-library/third_party/closure/goog/mochikit/async/deferred.js +0 -530
  1522. data/closure-library/third_party/closure/goog/mochikit/async/deferred_test.html +0 -627
  1523. data/closure-library/third_party/closure/goog/mochikit/async/deferredlist.js +0 -199
  1524. data/closure-library/third_party/closure/goog/mochikit/async/deferredlist_test.html +0 -426
  1525. data/closure-library/third_party/closure/goog/osapi/osapi.js +0 -91
  1526. data/closure-library/third_party/closure/goog/silverlight/AppManifest.xml +0 -6
  1527. data/closure-library/third_party/closure/goog/silverlight/AssemblyInfo.cs +0 -35
  1528. data/closure-library/third_party/closure/goog/silverlight/ClipboardButton.xaml +0 -9
  1529. data/closure-library/third_party/closure/goog/silverlight/ClipboardButton.xaml.cs +0 -74
  1530. data/closure-library/third_party/closure/goog/silverlight/ClipboardButtonApp.xaml +0 -8
  1531. data/closure-library/third_party/closure/goog/silverlight/ClipboardButtonApp.xaml.cs +0 -75
  1532. data/closure-library/third_party/closure/goog/silverlight/ClosureClipboardButton.csproj +0 -108
  1533. data/closure-library/third_party/closure/goog/silverlight/ClosureClipboardButton.csproj.user +0 -29
  1534. data/closure-library/third_party/closure/goog/silverlight/clipboardbutton.js +0 -279
  1535. data/closure-library/third_party/closure/goog/silverlight/silverlight.js +0 -758
  1536. data/closure-library/third_party/closure/goog/silverlight/supporteduseragent.js +0 -138
  1537. data/closure-library/third_party/closure/goog/silverlight/xap_files +0 -0
  1538. data/closure.gemspec +0 -19
  1539. data/config.ru +0 -40
  1540. data/java_src/ClosureScript.java +0 -89
  1541. data/java_src/make.rb +0 -19
  1542. data/lib/closure/sass.rb +0 -56
  1543. data/lib/closure.jar +0 -0
  1544. data/scripts/demos/compiler.build +0 -1
  1545. data/scripts/demos/compiler.debug +0 -24
  1546. data/scripts/demos/compiler.js.erb +0 -22
  1547. data/scripts/demos/compiler.map +0 -114
  1548. data/scripts/demos/deps.js.erb +0 -1
  1549. data/scripts/demos/googly.erb +0 -19
  1550. data/scripts/demos/googly.js +0 -24
  1551. data/scripts/demos/helloworld.erb +0 -24
  1552. data/scripts/demos/helloworld.js +0 -58
  1553. data/scripts/demos/helloworld.soy +0 -45
  1554. data/scripts/demos/index.erb +0 -29
  1555. data/scripts/externs/jquery.externs +0 -4
  1556. data/scripts/fixtures/_partial.haml +0 -2
  1557. data/scripts/fixtures/erb.html.erb +0 -8
  1558. data/scripts/fixtures/haml.haml +0 -6
  1559. data/scripts/fixtures/html.html +0 -9
  1560. data/scripts/fixtures/route_js.js.erb +0 -1
  1561. data/test/beanshell_test.rb +0 -22
  1562. data/test/server_test.rb +0 -67
  1563. data/test/sources_test.rb +0 -41
  1564. data/test/test_helper.rb +0 -12
  1565. /data/{scripts/externs → externs}/jquery-ui.externs +0 -0
  1566. /data/scripts/{demos/jquery.js → jquery/jquery_1.4.4.js} +0 -0
@@ -1,2424 +0,0 @@
1
- // Copyright 2006 The Closure Library Authors. All Rights Reserved.
2
- //
3
- // Licensed under the Apache License, Version 2.0 (the "License");
4
- // you may not use this file except in compliance with the License.
5
- // You may obtain a copy of the License at
6
- //
7
- // http://www.apache.org/licenses/LICENSE-2.0
8
- //
9
- // Unless required by applicable law or agreed to in writing, software
10
- // distributed under the License is distributed on an "AS-IS" BASIS,
11
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- // See the License for the specific language governing permissions and
13
- // limitations under the License.
14
-
15
- /**
16
- * @fileoverview Utilities for manipulating the browser's Document Object Model
17
- * Inspiration taken *heavily* from mochikit (http://mochikit.com/).
18
- *
19
- * You can use {@link goog.dom.DomHelper} to create new dom helpers that refer
20
- * to a different document object. This is useful if you are working with
21
- * frames or multiple windows.
22
- *
23
- */
24
-
25
-
26
- // TODO(user): Rename/refactor getTextContent and getRawTextContent. The problem
27
- // is that getTextContent should mimic the DOM3 textContent. We should add a
28
- // getInnerText (or getText) which tries to return the visible text, innerText.
29
-
30
-
31
- goog.provide('goog.dom');
32
- goog.provide('goog.dom.DomHelper');
33
- goog.provide('goog.dom.NodeType');
34
-
35
- goog.require('goog.array');
36
- goog.require('goog.dom.BrowserFeature');
37
- goog.require('goog.dom.TagName');
38
- goog.require('goog.dom.classes');
39
- goog.require('goog.math.Coordinate');
40
- goog.require('goog.math.Size');
41
- goog.require('goog.object');
42
- goog.require('goog.string');
43
- goog.require('goog.userAgent');
44
-
45
-
46
- /**
47
- * @define {boolean} Whether we know at compile time that the browser is in
48
- * quirks mode.
49
- */
50
- goog.dom.ASSUME_QUIRKS_MODE = false;
51
-
52
-
53
- /**
54
- * @define {boolean} Whether we know at compile time that the browser is in
55
- * standards compliance mode.
56
- */
57
- goog.dom.ASSUME_STANDARDS_MODE = false;
58
-
59
-
60
- /**
61
- * Whether we know the compatibility mode at compile time.
62
- * @type {boolean}
63
- * @private
64
- */
65
- goog.dom.COMPAT_MODE_KNOWN_ =
66
- goog.dom.ASSUME_QUIRKS_MODE || goog.dom.ASSUME_STANDARDS_MODE;
67
-
68
-
69
- /**
70
- * Enumeration for DOM node types (for reference)
71
- * @enum {number}
72
- */
73
- goog.dom.NodeType = {
74
- ELEMENT: 1,
75
- ATTRIBUTE: 2,
76
- TEXT: 3,
77
- CDATA_SECTION: 4,
78
- ENTITY_REFERENCE: 5,
79
- ENTITY: 6,
80
- PROCESSING_INSTRUCTION: 7,
81
- COMMENT: 8,
82
- DOCUMENT: 9,
83
- DOCUMENT_TYPE: 10,
84
- DOCUMENT_FRAGMENT: 11,
85
- NOTATION: 12
86
- };
87
-
88
-
89
- /**
90
- * Gets the DomHelper object for the document where the element resides.
91
- * @param {Node|Window=} opt_element If present, gets the DomHelper for this
92
- * element.
93
- * @return {!goog.dom.DomHelper} The DomHelper.
94
- */
95
- goog.dom.getDomHelper = function(opt_element) {
96
- return opt_element ?
97
- new goog.dom.DomHelper(goog.dom.getOwnerDocument(opt_element)) :
98
- (goog.dom.defaultDomHelper_ ||
99
- (goog.dom.defaultDomHelper_ = new goog.dom.DomHelper()));
100
- };
101
-
102
-
103
- /**
104
- * Cached default DOM helper.
105
- * @type {goog.dom.DomHelper}
106
- * @private
107
- */
108
- goog.dom.defaultDomHelper_;
109
-
110
-
111
- /**
112
- * Gets the document object being used by the dom library.
113
- * @return {!Document} Document object.
114
- */
115
- goog.dom.getDocument = function() {
116
- return document;
117
- };
118
-
119
-
120
- /**
121
- * Alias for getElementById. If a DOM node is passed in then we just return
122
- * that.
123
- * @param {string|Element} element Element ID or a DOM node.
124
- * @return {Element} The element with the given ID, or the node passed in.
125
- */
126
- goog.dom.getElement = function(element) {
127
- return goog.isString(element) ?
128
- document.getElementById(element) : element;
129
- };
130
-
131
-
132
- /**
133
- * Alias for getElement.
134
- * @param {string|Element} element Element ID or a DOM node.
135
- * @return {Element} The element with the given ID, or the node passed in.
136
- * @deprecated Use {@link goog.dom.getElement} instead.
137
- */
138
- goog.dom.$ = goog.dom.getElement;
139
-
140
-
141
- /**
142
- * Looks up elements by both tag and class name, using browser native functions
143
- * ({@code querySelectorAll}, {@code getElementsByTagName} or
144
- * {@code getElementsByClassName}) where possible. This function
145
- * is a useful, if limited, way of collecting a list of DOM elements
146
- * with certain characteristics. {@code goog.dom.query} offers a
147
- * more powerful and general solution which allows matching on CSS3
148
- * selector expressions, but at increased cost in code size. If all you
149
- * need is particular tags belonging to a single class, this function
150
- * is fast and sleek.
151
- *
152
- * @see {goog.dom.query}
153
- *
154
- * @param {?string=} opt_tag Element tag name.
155
- * @param {?string=} opt_class Optional class name.
156
- * @param {Document|Element=} opt_el Optional element to look in.
157
- * @return { {length: number} } Array-like list of elements (only a length
158
- * property and numerical indices are guaranteed to exist).
159
- */
160
- goog.dom.getElementsByTagNameAndClass = function(opt_tag, opt_class, opt_el) {
161
- return goog.dom.getElementsByTagNameAndClass_(document, opt_tag, opt_class,
162
- opt_el);
163
- };
164
-
165
-
166
- /**
167
- * Returns an array of all the elements with the provided className.
168
- * @see {goog.dom.query}
169
- * @param {!string} className the name of the class to look for.
170
- * @param {Document|Element=} opt_el Optional element to look in.
171
- * @return { {length: number} } The items found with the class name provided.
172
- */
173
- goog.dom.getElementsByClass = function(className, opt_el) {
174
- var parent = opt_el || document;
175
- if (goog.dom.canUseQuerySelector_(parent)) {
176
- return parent.querySelectorAll('.' + className);
177
- } else if (parent.getElementsByClassName) {
178
- return parent.getElementsByClassName(className);
179
- }
180
- return goog.dom.getElementsByTagNameAndClass_(
181
- document, '*', className, opt_el);
182
- };
183
-
184
-
185
- /**
186
- * Returns the first element with the provided className.
187
- * @see {goog.dom.query}
188
- * @param {!string} className the name of the class to look for.
189
- * @param {Element|Document=} opt_el Optional element to look in.
190
- * @return {Element} The first item with the class name provided.
191
- */
192
- goog.dom.getElementByClass = function(className, opt_el) {
193
- var parent = opt_el || document;
194
- var retVal = null;
195
- if (goog.dom.canUseQuerySelector_(parent)) {
196
- retVal = parent.querySelector('.' + className);
197
- } else {
198
- retVal = goog.dom.getElementsByClass(className, opt_el)[0];
199
- }
200
- return retVal || null;
201
- };
202
-
203
-
204
- /**
205
- * Prefer the standardized (http://www.w3.org/TR/selectors-api/), native and
206
- * fast W3C Selectors API. However, the version of WebKit that shipped with
207
- * Safari 3.1 and Chrome has a bug where it will not correctly match mixed-
208
- * case class name selectors in quirks mode.
209
- * @param {!Element|Document} parent The parent document object.
210
- * @return {boolean} whether or not we can use parent.querySelector* APIs.
211
- * @private
212
- */
213
- goog.dom.canUseQuerySelector_ = function(parent) {
214
- return parent.querySelectorAll &&
215
- parent.querySelector &&
216
- (!goog.userAgent.WEBKIT || goog.dom.isCss1CompatMode_(document) ||
217
- goog.userAgent.isVersion('528'));
218
- };
219
-
220
-
221
- /**
222
- * Helper for {@code getElementsByTagNameAndClass}.
223
- * @param {!Document} doc The document to get the elements in.
224
- * @param {?string=} opt_tag Element tag name.
225
- * @param {?string=} opt_class Optional class name.
226
- * @param {Document|Element=} opt_el Optional element to look in.
227
- * @return { {length: number} } Array-like list of elements (only a length
228
- * property and numerical indices are guaranteed to exist).
229
- * @private
230
- */
231
- goog.dom.getElementsByTagNameAndClass_ = function(doc, opt_tag, opt_class,
232
- opt_el) {
233
- var parent = opt_el || doc;
234
- var tagName = (opt_tag && opt_tag != '*') ? opt_tag.toUpperCase() : '';
235
-
236
- if (goog.dom.canUseQuerySelector_(parent) &&
237
- (tagName || opt_class)) {
238
- var query = tagName + (opt_class ? '.' + opt_class : '');
239
- return parent.querySelectorAll(query);
240
- }
241
-
242
- // Use the native getElementsByClassName if available, under the assumption
243
- // that even when the tag name is specified, there will be fewer elements to
244
- // filter through when going by class than by tag name
245
- if (opt_class && parent.getElementsByClassName) {
246
- var els = parent.getElementsByClassName(opt_class);
247
-
248
- if (tagName) {
249
- var arrayLike = {};
250
- var len = 0;
251
-
252
- // Filter for specific tags if requested.
253
- for (var i = 0, el; el = els[i]; i++) {
254
- if (tagName == el.nodeName) {
255
- arrayLike[len++] = el;
256
- }
257
- }
258
- arrayLike.length = len;
259
-
260
- return arrayLike;
261
- } else {
262
- return els;
263
- }
264
- }
265
-
266
- var els = parent.getElementsByTagName(tagName || '*');
267
-
268
- if (opt_class) {
269
- var arrayLike = {};
270
- var len = 0;
271
- for (var i = 0, el; el = els[i]; i++) {
272
- var className = el.className;
273
- // Check if className has a split function since SVG className does not.
274
- if (typeof className.split == 'function' &&
275
- goog.array.contains(className.split(/\s+/), opt_class)) {
276
- arrayLike[len++] = el;
277
- }
278
- }
279
- arrayLike.length = len;
280
- return arrayLike;
281
- } else {
282
- return els;
283
- }
284
- };
285
-
286
-
287
- /**
288
- * Alias for {@code getElementsByTagNameAndClass}.
289
- * @param {?string=} opt_tag Element tag name.
290
- * @param {?string=} opt_class Optional class name.
291
- * @param {Element=} opt_el Optional element to look in.
292
- * @return { {length: number} } Array-like list of elements (only a length
293
- * property and numerical indices are guaranteed to exist).
294
- * @deprecated Use {@link goog.dom.getElementsByTagNameAndClass} instead.
295
- */
296
- goog.dom.$$ = goog.dom.getElementsByTagNameAndClass;
297
-
298
-
299
- /**
300
- * Sets multiple properties on a node.
301
- * @param {Element} element DOM node to set properties on.
302
- * @param {Object} properties Hash of property:value pairs.
303
- */
304
- goog.dom.setProperties = function(element, properties) {
305
- goog.object.forEach(properties, function(val, key) {
306
- if (key == 'style') {
307
- element.style.cssText = val;
308
- } else if (key == 'class') {
309
- element.className = val;
310
- } else if (key == 'for') {
311
- element.htmlFor = val;
312
- } else if (key in goog.dom.DIRECT_ATTRIBUTE_MAP_) {
313
- element.setAttribute(goog.dom.DIRECT_ATTRIBUTE_MAP_[key], val);
314
- } else {
315
- element[key] = val;
316
- }
317
- });
318
- };
319
-
320
-
321
- /**
322
- * Map of attributes that should be set using
323
- * element.setAttribute(key, val) instead of element[key] = val. Used
324
- * by goog.dom.setProperties.
325
- *
326
- * @type {Object}
327
- * @private
328
- */
329
- goog.dom.DIRECT_ATTRIBUTE_MAP_ = {
330
- 'cellpadding': 'cellPadding',
331
- 'cellspacing': 'cellSpacing',
332
- 'colspan': 'colSpan',
333
- 'rowspan': 'rowSpan',
334
- 'valign': 'vAlign',
335
- 'height': 'height',
336
- 'width': 'width',
337
- 'usemap': 'useMap',
338
- 'frameborder': 'frameBorder',
339
- 'maxlength': 'maxLength',
340
- 'type': 'type'
341
- };
342
-
343
-
344
- /**
345
- * Gets the dimensions of the viewport.
346
- *
347
- * Gecko Standards mode:
348
- * docEl.clientWidth Width of viewport excluding scrollbar.
349
- * win.innerWidth Width of viewport including scrollbar.
350
- * body.clientWidth Width of body element.
351
- *
352
- * docEl.clientHeight Height of viewport excluding scrollbar.
353
- * win.innerHeight Height of viewport including scrollbar.
354
- * body.clientHeight Height of document.
355
- *
356
- * Gecko Backwards compatible mode:
357
- * docEl.clientWidth Width of viewport excluding scrollbar.
358
- * win.innerWidth Width of viewport including scrollbar.
359
- * body.clientWidth Width of viewport excluding scrollbar.
360
- *
361
- * docEl.clientHeight Height of document.
362
- * win.innerHeight Height of viewport including scrollbar.
363
- * body.clientHeight Height of viewport excluding scrollbar.
364
- *
365
- * IE6/7 Standards mode:
366
- * docEl.clientWidth Width of viewport excluding scrollbar.
367
- * win.innerWidth Undefined.
368
- * body.clientWidth Width of body element.
369
- *
370
- * docEl.clientHeight Height of viewport excluding scrollbar.
371
- * win.innerHeight Undefined.
372
- * body.clientHeight Height of document element.
373
- *
374
- * IE5 + IE6/7 Backwards compatible mode:
375
- * docEl.clientWidth 0.
376
- * win.innerWidth Undefined.
377
- * body.clientWidth Width of viewport excluding scrollbar.
378
- *
379
- * docEl.clientHeight 0.
380
- * win.innerHeight Undefined.
381
- * body.clientHeight Height of viewport excluding scrollbar.
382
- *
383
- * Opera 9 Standards and backwards compatible mode:
384
- * docEl.clientWidth Width of viewport excluding scrollbar.
385
- * win.innerWidth Width of viewport including scrollbar.
386
- * body.clientWidth Width of viewport excluding scrollbar.
387
- *
388
- * docEl.clientHeight Height of document.
389
- * win.innerHeight Height of viewport including scrollbar.
390
- * body.clientHeight Height of viewport excluding scrollbar.
391
- *
392
- * WebKit:
393
- * Safari 2
394
- * docEl.clientHeight Same as scrollHeight.
395
- * docEl.clientWidth Same as innerWidth.
396
- * win.innerWidth Width of viewport excluding scrollbar.
397
- * win.innerHeight Height of the viewport including scrollbar.
398
- * frame.innerHeight Height of the viewport exluding scrollbar.
399
- *
400
- * Safari 3 (tested in 522)
401
- *
402
- * docEl.clientWidth Width of viewport excluding scrollbar.
403
- * docEl.clientHeight Height of viewport excluding scrollbar in strict mode.
404
- * body.clientHeight Height of viewport excluding scrollbar in quirks mode.
405
- *
406
- * @param {Window=} opt_window Optional window element to test.
407
- * @return {!goog.math.Size} Object with values 'width' and 'height'.
408
- */
409
- goog.dom.getViewportSize = function(opt_window) {
410
- // TODO(user): This should not take an argument
411
- return goog.dom.getViewportSize_(opt_window || window);
412
- };
413
-
414
-
415
- /**
416
- * Helper for {@code getViewportSize}.
417
- * @param {Window} win The window to get the view port size for.
418
- * @return {!goog.math.Size} Object with values 'width' and 'height'.
419
- * @private
420
- */
421
- goog.dom.getViewportSize_ = function(win) {
422
- var doc = win.document;
423
-
424
- if (goog.userAgent.WEBKIT && !goog.userAgent.isVersion('500') &&
425
- !goog.userAgent.MOBILE) {
426
- // TODO(user): Sometimes we get something that isn't a valid window
427
- // object. In this case we just revert to the current window. We need to
428
- // figure out when this happens and find a real fix for it.
429
- // See the comments on goog.dom.getWindow.
430
- if (typeof win.innerHeight == 'undefined') {
431
- win = window;
432
- }
433
- var innerHeight = win.innerHeight;
434
- var scrollHeight = win.document.documentElement.scrollHeight;
435
-
436
- if (win == win.top) {
437
- if (scrollHeight < innerHeight) {
438
- innerHeight -= 15; // Scrollbars are 15px wide on Mac
439
- }
440
- }
441
- return new goog.math.Size(win.innerWidth, innerHeight);
442
- }
443
-
444
- var readsFromDocumentElement = goog.dom.isCss1CompatMode_(doc);
445
- if (goog.userAgent.OPERA && !goog.userAgent.isVersion('9.50')) {
446
- // Older versions of Opera used to read from document.body, but this
447
- // changed with 9.5.
448
- readsFromDocumentElement = false;
449
- }
450
- var el = readsFromDocumentElement ? doc.documentElement : doc.body;
451
-
452
- return new goog.math.Size(el.clientWidth, el.clientHeight);
453
- };
454
-
455
-
456
- /**
457
- * Calculates the height of the document.
458
- *
459
- * @return {number} The height of the current document.
460
- */
461
- goog.dom.getDocumentHeight = function() {
462
- return goog.dom.getDocumentHeight_(window);
463
- };
464
-
465
-
466
- /**
467
- * Calculates the height of the document of the given window.
468
- *
469
- * Function code copied from the opensocial gadget api:
470
- * gadgets.window.adjustHeight(opt_height)
471
- *
472
- * @private
473
- * @param {Window} win The window whose document height to retrieve.
474
- * @return {number} The height of the document of the given window.
475
- */
476
- goog.dom.getDocumentHeight_ = function(win) {
477
- // NOTE(user): This method will return the window size rather than the document
478
- // size in webkit quirks mode.
479
- var doc = win.document;
480
- var height = 0;
481
-
482
- if (doc) {
483
- // Calculating inner content height is hard and different between
484
- // browsers rendering in Strict vs. Quirks mode. We use a combination of
485
- // three properties within document.body and document.documentElement:
486
- // - scrollHeight
487
- // - offsetHeight
488
- // - clientHeight
489
- // These values differ significantly between browsers and rendering modes.
490
- // But there are patterns. It just takes a lot of time and persistence
491
- // to figure out.
492
-
493
- // Get the height of the viewport
494
- var vh = goog.dom.getViewportSize_(win).height;
495
- var body = doc.body;
496
- var docEl = doc.documentElement;
497
- if (goog.dom.isCss1CompatMode_(doc) && docEl.scrollHeight) {
498
- // In Strict mode:
499
- // The inner content height is contained in either:
500
- // document.documentElement.scrollHeight
501
- // document.documentElement.offsetHeight
502
- // Based on studying the values output by different browsers,
503
- // use the value that's NOT equal to the viewport height found above.
504
- height = docEl.scrollHeight != vh ?
505
- docEl.scrollHeight : docEl.offsetHeight;
506
- } else {
507
- // In Quirks mode:
508
- // documentElement.clientHeight is equal to documentElement.offsetHeight
509
- // except in IE. In most browsers, document.documentElement can be used
510
- // to calculate the inner content height.
511
- // However, in other browsers (e.g. IE), document.body must be used
512
- // instead. How do we know which one to use?
513
- // If document.documentElement.clientHeight does NOT equal
514
- // document.documentElement.offsetHeight, then use document.body.
515
- var sh = docEl.scrollHeight;
516
- var oh = docEl.offsetHeight;
517
- if (docEl.clientHeight != oh) {
518
- sh = body.scrollHeight;
519
- oh = body.offsetHeight;
520
- }
521
-
522
- // Detect whether the inner content height is bigger or smaller
523
- // than the bounding box (viewport). If bigger, take the larger
524
- // value. If smaller, take the smaller value.
525
- if (sh > vh) {
526
- // Content is larger
527
- height = sh > oh ? sh : oh;
528
- } else {
529
- // Content is smaller
530
- height = sh < oh ? sh : oh;
531
- }
532
- }
533
- }
534
-
535
- return height;
536
- };
537
-
538
-
539
- /**
540
- * Gets the page scroll distance as a coordinate object.
541
- *
542
- * @param {Window=} opt_window Optional window element to test.
543
- * @return {!goog.math.Coordinate} Object with values 'x' and 'y'.
544
- * @deprecated Use {@link goog.dom.getDocumentScroll} instead.
545
- */
546
- goog.dom.getPageScroll = function(opt_window) {
547
- var win = opt_window || goog.global || window;
548
- return goog.dom.getDomHelper(win.document).getDocumentScroll();
549
- };
550
-
551
-
552
- /**
553
- * Gets the document scroll distance as a coordinate object.
554
- *
555
- * @return {!goog.math.Coordinate} Object with values 'x' and 'y'.
556
- */
557
- goog.dom.getDocumentScroll = function() {
558
- return goog.dom.getDocumentScroll_(document);
559
- };
560
-
561
-
562
- /**
563
- * Helper for {@code getDocumentScroll}.
564
- *
565
- * @param {!Document} doc The document to get the scroll for.
566
- * @return {!goog.math.Coordinate} Object with values 'x' and 'y'.
567
- * @private
568
- */
569
- goog.dom.getDocumentScroll_ = function(doc) {
570
- var el = goog.dom.getDocumentScrollElement_(doc);
571
- return new goog.math.Coordinate(el.scrollLeft, el.scrollTop);
572
- };
573
-
574
-
575
- /**
576
- * Gets the document scroll element.
577
- * @return {Element} Scrolling element.
578
- */
579
- goog.dom.getDocumentScrollElement = function() {
580
- return goog.dom.getDocumentScrollElement_(document);
581
- };
582
-
583
-
584
- /**
585
- * Helper for {@code getDocumentScrollElement}.
586
- * @param {!Document} doc The document to get the scroll element for.
587
- * @return {Element} Scrolling element.
588
- * @private
589
- */
590
- goog.dom.getDocumentScrollElement_ = function(doc) {
591
- // Safari (2 and 3) needs body.scrollLeft in both quirks mode and strict mode.
592
- return !goog.userAgent.WEBKIT && goog.dom.isCss1CompatMode_(doc) ?
593
- doc.documentElement : doc.body;
594
- };
595
-
596
-
597
- /**
598
- * Gets the window object associated with the given document.
599
- *
600
- * @param {Document=} opt_doc Document object to get window for.
601
- * @return {Window} The window associated with the given document.
602
- */
603
- goog.dom.getWindow = function(opt_doc) {
604
- // TODO(user): This should not take an argument.
605
- return opt_doc ? goog.dom.getWindow_(opt_doc) : window;
606
- };
607
-
608
-
609
- /**
610
- * Helper for {@code getWindow}.
611
- *
612
- * @param {!Document} doc Document object to get window for.
613
- * @return {!Window} The window associated with the given document.
614
- * @private
615
- */
616
- goog.dom.getWindow_ = function(doc) {
617
- return doc.parentWindow || doc.defaultView;
618
- };
619
-
620
-
621
- /**
622
- * Returns a dom node with a set of attributes. This function accepts varargs
623
- * for subsequent nodes to be added. Subsequent nodes will be added to the
624
- * first node as childNodes.
625
- *
626
- * So:
627
- * <code>createDom('div', null, createDom('p'), createDom('p'));</code>
628
- * would return a div with two child paragraphs
629
- *
630
- * @param {string} tagName Tag to create.
631
- * @param {Object|Array.<string>|string=} opt_attributes If object, then a map
632
- * of name-value pairs for attributes. If a string, then this is the
633
- * className of the new element. If an array, the elements will be joined
634
- * together as the className of the new element.
635
- * @param {...Object|string|Array|NodeList} var_args Further DOM nodes or
636
- * strings for text nodes. If one of the var_args is an array or NodeList,i
637
- * its elements will be added as childNodes instead.
638
- * @return {!Element} Reference to a DOM node.
639
- */
640
- goog.dom.createDom = function(tagName, opt_attributes, var_args) {
641
- return goog.dom.createDom_(document, arguments);
642
- };
643
-
644
-
645
- /**
646
- * Helper for {@code createDom}.
647
- * @param {!Document} doc The document to create the DOM in.
648
- * @param {!Arguments} args Argument object passed from the callers. See
649
- * {@code goog.dom.createDom} for details.
650
- * @return {!Element} Reference to a DOM node.
651
- * @private
652
- */
653
- goog.dom.createDom_ = function(doc, args) {
654
- var tagName = args[0];
655
- var attributes = args[1];
656
-
657
- // Internet Explorer is dumb: http://msdn.microsoft.com/workshop/author/
658
- // dhtml/reference/properties/name_2.asp
659
- // Also does not allow setting of 'type' attribute on 'input' or 'button'.
660
- if (!goog.dom.BrowserFeature.CAN_ADD_NAME_OR_TYPE_ATTRIBUTES && attributes &&
661
- (attributes.name || attributes.type)) {
662
- var tagNameArr = ['<', tagName];
663
- if (attributes.name) {
664
- tagNameArr.push(' name="', goog.string.htmlEscape(attributes.name),
665
- '"');
666
- }
667
- if (attributes.type) {
668
- tagNameArr.push(' type="', goog.string.htmlEscape(attributes.type),
669
- '"');
670
-
671
- // Clone attributes map to remove 'type' without mutating the input.
672
- var clone = {};
673
- goog.object.extend(clone, attributes);
674
- attributes = clone;
675
- delete attributes.type;
676
- }
677
- tagNameArr.push('>');
678
- tagName = tagNameArr.join('');
679
- }
680
-
681
- var element = doc.createElement(tagName);
682
-
683
- if (attributes) {
684
- if (goog.isString(attributes)) {
685
- element.className = attributes;
686
- } else if (goog.isArray(attributes)) {
687
- goog.dom.classes.add.apply(null, [element].concat(attributes));
688
- } else {
689
- goog.dom.setProperties(element, attributes);
690
- }
691
- }
692
-
693
- if (args.length > 2) {
694
- goog.dom.append_(doc, element, args, 2);
695
- }
696
-
697
- return element;
698
- };
699
-
700
-
701
- /**
702
- * Appends a node with text or other nodes.
703
- * @param {!Document} doc The document to create new nodes in.
704
- * @param {!Node} parent The node to append nodes to.
705
- * @param {!Arguments} args The values to add. See {@code goog.dom.append}.
706
- * @param {number} startIndex The index of the array to start from.
707
- * @private
708
- */
709
- goog.dom.append_ = function(doc, parent, args, startIndex) {
710
- function childHandler(child) {
711
- // TODO(user): More coercion, ala MochiKit?
712
- if (child) {
713
- parent.appendChild(goog.isString(child) ?
714
- doc.createTextNode(child) : child);
715
- }
716
- }
717
-
718
- for (var i = startIndex; i < args.length; i++) {
719
- var arg = args[i];
720
- // TODO(user): Fix isArrayLike to return false for a text node.
721
- if (goog.isArrayLike(arg) && !goog.dom.isNodeLike(arg)) {
722
- // If the argument is a node list, not a real array, use a clone,
723
- // because forEach can't be used to mutate a NodeList.
724
- goog.array.forEach(goog.dom.isNodeList(arg) ?
725
- goog.array.clone(arg) : arg,
726
- childHandler);
727
- } else {
728
- childHandler(arg);
729
- }
730
- }
731
- };
732
-
733
-
734
- /**
735
- * Alias for {@code createDom}.
736
- * @param {string} tagName Tag to create.
737
- * @param {string|Object=} opt_attributes If object, then a map of name-value
738
- * pairs for attributes. If a string, then this is the className of the new
739
- * element.
740
- * @param {...Object|string|Array|NodeList} var_args Further DOM nodes or
741
- * strings for text nodes. If one of the var_args is an array, its
742
- * children will be added as childNodes instead.
743
- * @return {!Element} Reference to a DOM node.
744
- * @deprecated Use {@link goog.dom.createDom} instead.
745
- */
746
- goog.dom.$dom = goog.dom.createDom;
747
-
748
-
749
- /**
750
- * Creates a new element.
751
- * @param {string} name Tag name.
752
- * @return {!Element} The new element.
753
- */
754
- goog.dom.createElement = function(name) {
755
- return document.createElement(name);
756
- };
757
-
758
-
759
- /**
760
- * Creates a new text node.
761
- * @param {string} content Content.
762
- * @return {!Text} The new text node.
763
- */
764
- goog.dom.createTextNode = function(content) {
765
- return document.createTextNode(content);
766
- };
767
-
768
-
769
- /**
770
- * Create a table.
771
- * @param {number} rows The number of rows in the table. Must be >= 1.
772
- * @param {number} columns The number of columns in the table. Must be >= 1.
773
- * @param {boolean=} opt_fillWithNbsp If true, fills table entries with nsbps.
774
- * @return {!Element} The created table.
775
- */
776
- goog.dom.createTable = function(rows, columns, opt_fillWithNbsp) {
777
- return goog.dom.createTable_(document, rows, columns, !!opt_fillWithNbsp);
778
- };
779
-
780
-
781
- /**
782
- * Create a table.
783
- * @param {!Document} doc Document object to use to create the table.
784
- * @param {number} rows The number of rows in the table. Must be >= 1.
785
- * @param {number} columns The number of columns in the table. Must be >= 1.
786
- * @param {boolean} fillWithNbsp If true, fills table entries with nsbps.
787
- * @return {!Element} The created table.
788
- * @private
789
- */
790
- goog.dom.createTable_ = function(doc, rows, columns, fillWithNbsp) {
791
- var rowHtml = ['<tr>'];
792
- for (var i = 0; i < columns; i++) {
793
- rowHtml.push(fillWithNbsp ? '<td>&nbsp;</td>' : '<td></td>');
794
- }
795
- rowHtml.push('</tr>');
796
- rowHtml = rowHtml.join('');
797
- var totalHtml = ['<table>'];
798
- for (i = 0; i < rows; i++) {
799
- totalHtml.push(rowHtml);
800
- }
801
- totalHtml.push('</table>');
802
-
803
- var elem = doc.createElement(goog.dom.TagName.DIV);
804
- elem.innerHTML = totalHtml.join('');
805
- return /** @type {!Element} */ (elem.removeChild(elem.firstChild));
806
- };
807
-
808
-
809
- /**
810
- * Converts an HTML string into a document fragment.
811
- *
812
- * @param {string} htmlString The HTML string to convert.
813
- * @return {!Node} The resulting document fragment.
814
- */
815
- goog.dom.htmlToDocumentFragment = function(htmlString) {
816
- return goog.dom.htmlToDocumentFragment_(document, htmlString);
817
- };
818
-
819
-
820
- /**
821
- * Helper for {@code htmlToDocumentFragment}.
822
- *
823
- * @param {!Document} doc The document.
824
- * @param {string} htmlString The HTML string to convert.
825
- * @return {!Node} The resulting document fragment.
826
- * @private
827
- */
828
- goog.dom.htmlToDocumentFragment_ = function(doc, htmlString) {
829
- var tempDiv = doc.createElement('div');
830
- if (goog.dom.BrowserFeature.INNER_HTML_NEEDS_SCOPED_ELEMENT) {
831
- tempDiv.innerHTML = '<br>' + htmlString;
832
- tempDiv.removeChild(tempDiv.firstChild);
833
- } else {
834
- tempDiv.innerHTML = htmlString;
835
- }
836
- if (tempDiv.childNodes.length == 1) {
837
- return /** @type {!Node} */ (tempDiv.removeChild(tempDiv.firstChild));
838
- } else {
839
- var fragment = doc.createDocumentFragment();
840
- while (tempDiv.firstChild) {
841
- fragment.appendChild(tempDiv.firstChild);
842
- }
843
- return fragment;
844
- }
845
- };
846
-
847
-
848
- /**
849
- * Returns the compatMode of the document.
850
- * @return {string} The result is either CSS1Compat or BackCompat.
851
- * @deprecated use goog.dom.isCss1CompatMode instead.
852
- */
853
- goog.dom.getCompatMode = function() {
854
- return goog.dom.isCss1CompatMode() ? 'CSS1Compat' : 'BackCompat';
855
- };
856
-
857
-
858
- /**
859
- * Returns true if the browser is in "CSS1-compatible" (standards-compliant)
860
- * mode, false otherwise.
861
- * @return {boolean} True if in CSS1-compatible mode.
862
- */
863
- goog.dom.isCss1CompatMode = function() {
864
- return goog.dom.isCss1CompatMode_(document);
865
- };
866
-
867
-
868
- /**
869
- * Returns true if the browser is in "CSS1-compatible" (standards-compliant)
870
- * mode, false otherwise.
871
- * @param {Document} doc The document to check.
872
- * @return {boolean} True if in CSS1-compatible mode.
873
- * @private
874
- */
875
- goog.dom.isCss1CompatMode_ = function(doc) {
876
- if (goog.dom.COMPAT_MODE_KNOWN_) {
877
- return goog.dom.ASSUME_STANDARDS_MODE;
878
- }
879
-
880
- return doc.compatMode == 'CSS1Compat';
881
- };
882
-
883
-
884
- /**
885
- * Determines if the given node can contain children, intended to be used for
886
- * HTML generation.
887
- *
888
- * IE natively supports node.canHaveChildren but has inconsistent behavior.
889
- * Prior to IE8 the base tag allows children and in IE9 all nodes return true
890
- * for canHaveChildren.
891
- *
892
- * In practice all non-IE browsers allow you to add children to any node, but
893
- * the behavior is inconsistent:
894
- *
895
- * <pre>
896
- * var a = document.createElement('br');
897
- * a.appendChild(document.createTextNode('foo'));
898
- * a.appendChild(document.createTextNode('bar'));
899
- * console.log(a.childNodes.length); // 2
900
- * console.log(a.innerHTML); // Chrome: "", IE9: "foobar", FF3.5: "foobar"
901
- * </pre>
902
- *
903
- * TODO(user): Rename shouldAllowChildren() ?
904
- *
905
- * @param {Node} node The node to check.
906
- * @return {boolean} Whether the node can contain children.
907
- */
908
- goog.dom.canHaveChildren = function(node) {
909
- if (node.nodeType != goog.dom.NodeType.ELEMENT) {
910
- return false;
911
- }
912
- switch (node.tagName) {
913
- case goog.dom.TagName.APPLET:
914
- case goog.dom.TagName.AREA:
915
- case goog.dom.TagName.BASE:
916
- case goog.dom.TagName.BR:
917
- case goog.dom.TagName.COL:
918
- case goog.dom.TagName.FRAME:
919
- case goog.dom.TagName.HR:
920
- case goog.dom.TagName.IMG:
921
- case goog.dom.TagName.INPUT:
922
- case goog.dom.TagName.IFRAME:
923
- case goog.dom.TagName.ISINDEX:
924
- case goog.dom.TagName.LINK:
925
- case goog.dom.TagName.NOFRAMES:
926
- case goog.dom.TagName.NOSCRIPT:
927
- case goog.dom.TagName.META:
928
- case goog.dom.TagName.OBJECT:
929
- case goog.dom.TagName.PARAM:
930
- case goog.dom.TagName.SCRIPT:
931
- case goog.dom.TagName.STYLE:
932
- return false;
933
- }
934
- return true;
935
- };
936
-
937
-
938
- /**
939
- * Appends a child to a node.
940
- * @param {Node} parent Parent.
941
- * @param {Node} child Child.
942
- */
943
- goog.dom.appendChild = function(parent, child) {
944
- parent.appendChild(child);
945
- };
946
-
947
-
948
- /**
949
- * Appends a node with text or other nodes.
950
- * @param {!Node} parent The node to append nodes to.
951
- * @param {...goog.dom.Appendable} var_args The things to append to the node.
952
- * If this is a Node it is appended as is.
953
- * If this is a string then a text node is appended.
954
- * If this is an array like object then fields 0 to length - 1 are appended.
955
- */
956
- goog.dom.append = function(parent, var_args) {
957
- goog.dom.append_(goog.dom.getOwnerDocument(parent), parent, arguments, 1);
958
- };
959
-
960
-
961
- /**
962
- * Removes all the child nodes on a DOM node.
963
- * @param {Node} node Node to remove children from.
964
- */
965
- goog.dom.removeChildren = function(node) {
966
- // Note: Iterations over live collections can be slow, this is the fastest
967
- // we could find. The double parenthesis are used to prevent JsCompiler and
968
- // strict warnings.
969
- var child;
970
- while ((child = node.firstChild)) {
971
- node.removeChild(child);
972
- }
973
- };
974
-
975
-
976
- /**
977
- * Inserts a new node before an existing reference node (i.e. as the previous
978
- * sibling). If the reference node has no parent, then does nothing.
979
- * @param {Node} newNode Node to insert.
980
- * @param {Node} refNode Reference node to insert before.
981
- */
982
- goog.dom.insertSiblingBefore = function(newNode, refNode) {
983
- if (refNode.parentNode) {
984
- refNode.parentNode.insertBefore(newNode, refNode);
985
- }
986
- };
987
-
988
-
989
- /**
990
- * Inserts a new node after an existing reference node (i.e. as the next
991
- * sibling). If the reference node has no parent, then does nothing.
992
- * @param {Node} newNode Node to insert.
993
- * @param {Node} refNode Reference node to insert after.
994
- */
995
- goog.dom.insertSiblingAfter = function(newNode, refNode) {
996
- if (refNode.parentNode) {
997
- refNode.parentNode.insertBefore(newNode, refNode.nextSibling);
998
- }
999
- };
1000
-
1001
-
1002
- /**
1003
- * Removes a node from its parent.
1004
- * @param {Node} node The node to remove.
1005
- * @return {Node} The node removed if removed; else, null.
1006
- */
1007
- goog.dom.removeNode = function(node) {
1008
- return node && node.parentNode ? node.parentNode.removeChild(node) : null;
1009
- };
1010
-
1011
-
1012
- /**
1013
- * Replaces a node in the DOM tree. Will do nothing if {@code oldNode} has no
1014
- * parent.
1015
- * @param {Node} newNode Node to insert.
1016
- * @param {Node} oldNode Node to replace.
1017
- */
1018
- goog.dom.replaceNode = function(newNode, oldNode) {
1019
- var parent = oldNode.parentNode;
1020
- if (parent) {
1021
- parent.replaceChild(newNode, oldNode);
1022
- }
1023
- };
1024
-
1025
-
1026
- /**
1027
- * Flattens an element. That is, removes it and replace it with its children.
1028
- * Does nothing if the element is not in the document.
1029
- * @param {Element} element The element to flatten.
1030
- * @return {Element|undefined} The original element, detached from the document
1031
- * tree, sans children; or undefined, if the element was not in the
1032
- * document to begin with.
1033
- */
1034
- goog.dom.flattenElement = function(element) {
1035
- var child, parent = element.parentNode;
1036
- if (parent && parent.nodeType != goog.dom.NodeType.DOCUMENT_FRAGMENT) {
1037
- // Use IE DOM method (supported by Opera too) if available
1038
- if (element.removeNode) {
1039
- return /** @type {Element} */ (element.removeNode(false));
1040
- } else {
1041
- // Move all children of the original node up one level.
1042
- while ((child = element.firstChild)) {
1043
- parent.insertBefore(child, element);
1044
- }
1045
-
1046
- // Detach the original element.
1047
- return /** @type {Element} */ (goog.dom.removeNode(element));
1048
- }
1049
- }
1050
- };
1051
-
1052
-
1053
- /**
1054
- * Returns the first child node that is an element.
1055
- * @param {Node} node The node to get the first child element of.
1056
- * @return {Element} The first child node of {@code node} that is an element.
1057
- */
1058
- goog.dom.getFirstElementChild = function(node) {
1059
- return goog.dom.getNextElementNode_(node.firstChild, true);
1060
- };
1061
-
1062
-
1063
- /**
1064
- * Returns the last child node that is an element.
1065
- * @param {Node} node The node to get the last child element of.
1066
- * @return {Element} The last child node of {@code node} that is an element.
1067
- */
1068
- goog.dom.getLastElementChild = function(node) {
1069
- return goog.dom.getNextElementNode_(node.lastChild, false);
1070
- };
1071
-
1072
-
1073
- /**
1074
- * Returns the first next sibling that is an element.
1075
- * @param {Node} node The node to get the next sibling element of.
1076
- * @return {Element} The next sibling of {@code node} that is an element.
1077
- */
1078
- goog.dom.getNextElementSibling = function(node) {
1079
- return goog.dom.getNextElementNode_(node.nextSibling, true);
1080
- };
1081
-
1082
-
1083
- /**
1084
- * Returns the first previous sibling that is an element.
1085
- * @param {Node} node The node to get the previous sibling element of.
1086
- * @return {Element} The first previous sibling of {@code node} that is
1087
- * an element.
1088
- */
1089
- goog.dom.getPreviousElementSibling = function(node) {
1090
- return goog.dom.getNextElementNode_(node.previousSibling, false);
1091
- };
1092
-
1093
-
1094
- /**
1095
- * Returns the first node that is an element in the specified direction,
1096
- * starting with {@code node}.
1097
- * @param {Node} node The node to get the next element from.
1098
- * @param {boolean} forward Whether to look forwards or backwards.
1099
- * @return {Element} The first element.
1100
- * @private
1101
- */
1102
- goog.dom.getNextElementNode_ = function(node, forward) {
1103
- while (node && node.nodeType != goog.dom.NodeType.ELEMENT) {
1104
- node = forward ? node.nextSibling : node.previousSibling;
1105
- }
1106
-
1107
- return /** @type {Element} */ (node);
1108
- };
1109
-
1110
-
1111
- /**
1112
- * Returns the next node in source order from the given node.
1113
- * @param {Node} node The node.
1114
- * @return {Node} The next node in the DOM tree, or null if this was the last
1115
- * node.
1116
- */
1117
- goog.dom.getNextNode = function(node) {
1118
- if (!node) {
1119
- return null;
1120
- }
1121
-
1122
- if (node.firstChild) {
1123
- return node.firstChild;
1124
- }
1125
-
1126
- while (node && !node.nextSibling) {
1127
- node = node.parentNode;
1128
- }
1129
-
1130
- return node ? node.nextSibling : null;
1131
- };
1132
-
1133
-
1134
- /**
1135
- * Returns the previous node in source order from the given node.
1136
- * @param {Node} node The node.
1137
- * @return {Node} The previous node in the DOM tree, or null if this was the
1138
- * first node.
1139
- */
1140
- goog.dom.getPreviousNode = function(node) {
1141
- if (!node) {
1142
- return null;
1143
- }
1144
-
1145
- if (!node.previousSibling) {
1146
- return node.parentNode;
1147
- }
1148
-
1149
- node = node.previousSibling;
1150
- while (node && node.lastChild) {
1151
- node = node.lastChild;
1152
- }
1153
-
1154
- return node;
1155
- };
1156
-
1157
-
1158
- /**
1159
- * Whether the object looks like a DOM node.
1160
- * @param {*} obj The object being tested for node likeness.
1161
- * @return {boolean} Whether the object looks like a DOM node.
1162
- */
1163
- goog.dom.isNodeLike = function(obj) {
1164
- return goog.isObject(obj) && obj.nodeType > 0;
1165
- };
1166
-
1167
-
1168
- /**
1169
- * Returns true if the specified value is a Window object. This includes the
1170
- * global window for HTML pages, and iframe windows.
1171
- * @param {*} obj Variable to test.
1172
- * @return {boolean} Whether the variable is a window.
1173
- */
1174
- goog.dom.isWindow = function(obj) {
1175
- return goog.isObject(obj) && obj['window'] == obj;
1176
- };
1177
-
1178
-
1179
- /**
1180
- * Whether a node contains another node.
1181
- * @param {Node} parent The node that should contain the other node.
1182
- * @param {Node} descendant The node to test presence of.
1183
- * @return {boolean} Whether the parent node contains the descendent node.
1184
- */
1185
- goog.dom.contains = function(parent, descendant) {
1186
- // We use browser specific methods for this if available since it is faster
1187
- // that way.
1188
-
1189
- // IE DOM
1190
- if (parent.contains && descendant.nodeType == goog.dom.NodeType.ELEMENT) {
1191
- return parent == descendant || parent.contains(descendant);
1192
- }
1193
-
1194
- // W3C DOM Level 3
1195
- if (typeof parent.compareDocumentPosition != 'undefined') {
1196
- return parent == descendant ||
1197
- Boolean(parent.compareDocumentPosition(descendant) & 16);
1198
- }
1199
-
1200
- // W3C DOM Level 1
1201
- while (descendant && parent != descendant) {
1202
- descendant = descendant.parentNode;
1203
- }
1204
- return descendant == parent;
1205
- };
1206
-
1207
-
1208
- /**
1209
- * Compares the document order of two nodes, returning 0 if they are the same
1210
- * node, a negative number if node1 is before node2, and a positive number if
1211
- * node2 is before node1. Note that we compare the order the tags appear in the
1212
- * document so in the tree <b><i>text</i></b> the B node is considered to be
1213
- * before the I node.
1214
- *
1215
- * @param {Node} node1 The first node to compare.
1216
- * @param {Node} node2 The second node to compare.
1217
- * @return {number} 0 if the nodes are the same node, a negative number if node1
1218
- * is before node2, and a positive number if node2 is before node1.
1219
- */
1220
- goog.dom.compareNodeOrder = function(node1, node2) {
1221
- // Fall out quickly for equality.
1222
- if (node1 == node2) {
1223
- return 0;
1224
- }
1225
-
1226
- // Use compareDocumentPosition where available
1227
- if (node1.compareDocumentPosition) {
1228
- // 4 is the bitmask for FOLLOWS.
1229
- return node1.compareDocumentPosition(node2) & 2 ? 1 : -1;
1230
- }
1231
-
1232
- // Process in IE using sourceIndex - we check to see if the first node has
1233
- // a source index or if its parent has one.
1234
- if ('sourceIndex' in node1 ||
1235
- (node1.parentNode && 'sourceIndex' in node1.parentNode)) {
1236
- var isElement1 = node1.nodeType == goog.dom.NodeType.ELEMENT;
1237
- var isElement2 = node2.nodeType == goog.dom.NodeType.ELEMENT;
1238
-
1239
- if (isElement1 && isElement2) {
1240
- return node1.sourceIndex - node2.sourceIndex;
1241
- } else {
1242
- var parent1 = node1.parentNode;
1243
- var parent2 = node2.parentNode;
1244
-
1245
- if (parent1 == parent2) {
1246
- return goog.dom.compareSiblingOrder_(node1, node2);
1247
- }
1248
-
1249
- if (!isElement1 && goog.dom.contains(parent1, node2)) {
1250
- return -1 * goog.dom.compareParentsDescendantNodeIe_(node1, node2);
1251
- }
1252
-
1253
-
1254
- if (!isElement2 && goog.dom.contains(parent2, node1)) {
1255
- return goog.dom.compareParentsDescendantNodeIe_(node2, node1);
1256
- }
1257
-
1258
- return (isElement1 ? node1.sourceIndex : parent1.sourceIndex) -
1259
- (isElement2 ? node2.sourceIndex : parent2.sourceIndex);
1260
- }
1261
- }
1262
-
1263
- // For Safari, we compare ranges.
1264
- var doc = goog.dom.getOwnerDocument(node1);
1265
-
1266
- var range1, range2;
1267
- range1 = doc.createRange();
1268
- range1.selectNode(node1);
1269
- range1.collapse(true);
1270
-
1271
- range2 = doc.createRange();
1272
- range2.selectNode(node2);
1273
- range2.collapse(true);
1274
-
1275
- return range1.compareBoundaryPoints(goog.global['Range'].START_TO_END,
1276
- range2);
1277
- };
1278
-
1279
-
1280
- /**
1281
- * Utility function to compare the position of two nodes, when
1282
- * {@code textNode}'s parent is an ancestor of {@code node}. If this entry
1283
- * condition is not met, this function will attempt to reference a null object.
1284
- * @param {Node} textNode The textNode to compare.
1285
- * @param {Node} node The node to compare.
1286
- * @return {number} -1 if node is before textNode, +1 otherwise.
1287
- * @private
1288
- */
1289
- goog.dom.compareParentsDescendantNodeIe_ = function(textNode, node) {
1290
- var parent = textNode.parentNode;
1291
- if (parent == node) {
1292
- // If textNode is a child of node, then node comes first.
1293
- return -1;
1294
- }
1295
- var sibling = node;
1296
- while (sibling.parentNode != parent) {
1297
- sibling = sibling.parentNode;
1298
- }
1299
- return goog.dom.compareSiblingOrder_(sibling, textNode);
1300
- };
1301
-
1302
-
1303
- /**
1304
- * Utility function to compare the position of two nodes known to be non-equal
1305
- * siblings.
1306
- * @param {Node} node1 The first node to compare.
1307
- * @param {Node} node2 The second node to compare.
1308
- * @return {number} -1 if node1 is before node2, +1 otherwise.
1309
- * @private
1310
- */
1311
- goog.dom.compareSiblingOrder_ = function(node1, node2) {
1312
- var s = node2;
1313
- while ((s = s.previousSibling)) {
1314
- if (s == node1) {
1315
- // We just found node1 before node2.
1316
- return -1;
1317
- }
1318
- }
1319
-
1320
- // Since we didn't find it, node1 must be after node2.
1321
- return 1;
1322
- };
1323
-
1324
-
1325
- /**
1326
- * Find the deepest common ancestor of the given nodes.
1327
- * @param {...Node} var_args The nodes to find a common ancestor of.
1328
- * @return {Node} The common ancestor of the nodes, or null if there is none.
1329
- * null will only be returned if two or more of the nodes are from different
1330
- * documents.
1331
- */
1332
- goog.dom.findCommonAncestor = function(var_args) {
1333
- var i, count = arguments.length;
1334
- if (!count) {
1335
- return null;
1336
- } else if (count == 1) {
1337
- return arguments[0];
1338
- }
1339
-
1340
- var paths = [];
1341
- var minLength = Infinity;
1342
- for (i = 0; i < count; i++) {
1343
- // Compute the list of ancestors.
1344
- var ancestors = [];
1345
- var node = arguments[i];
1346
- while (node) {
1347
- ancestors.unshift(node);
1348
- node = node.parentNode;
1349
- }
1350
-
1351
- // Save the list for comparison.
1352
- paths.push(ancestors);
1353
- minLength = Math.min(minLength, ancestors.length);
1354
- }
1355
- var output = null;
1356
- for (i = 0; i < minLength; i++) {
1357
- var first = paths[0][i];
1358
- for (var j = 1; j < count; j++) {
1359
- if (first != paths[j][i]) {
1360
- return output;
1361
- }
1362
- }
1363
- output = first;
1364
- }
1365
- return output;
1366
- };
1367
-
1368
-
1369
- /**
1370
- * Returns the owner document for a node.
1371
- * @param {Node|Window} node The node to get the document for.
1372
- * @return {!Document} The document owning the node.
1373
- */
1374
- goog.dom.getOwnerDocument = function(node) {
1375
- // TODO(user): Remove IE5 code.
1376
- // IE5 uses document instead of ownerDocument
1377
- return /** @type {!Document} */ (
1378
- node.nodeType == goog.dom.NodeType.DOCUMENT ? node :
1379
- node.ownerDocument || node.document);
1380
- };
1381
-
1382
-
1383
- /**
1384
- * Cross-browser function for getting the document element of a frame or iframe.
1385
- * @param {Element} frame Frame element.
1386
- * @return {!Document} The frame content document.
1387
- */
1388
- goog.dom.getFrameContentDocument = function(frame) {
1389
- var doc;
1390
- if (goog.userAgent.WEBKIT) {
1391
- doc = (frame.document || frame.contentWindow.document);
1392
- } else {
1393
- doc = (frame.contentDocument || frame.contentWindow.document);
1394
- }
1395
- return doc;
1396
- };
1397
-
1398
-
1399
- /**
1400
- * Cross-browser function for getting the window of a frame or iframe.
1401
- * @param {HTMLIFrameElement|HTMLFrameElement} frame Frame element.
1402
- * @return {Window} The window associated with the given frame.
1403
- */
1404
- goog.dom.getFrameContentWindow = function(frame) {
1405
- return frame.contentWindow ||
1406
- goog.dom.getWindow_(goog.dom.getFrameContentDocument(frame));
1407
- };
1408
-
1409
-
1410
- /**
1411
- * Cross-browser function for setting the text content of an element.
1412
- * @param {Element} element The element to change the text content of.
1413
- * @param {string} text The string that should replace the current element
1414
- * content.
1415
- */
1416
- goog.dom.setTextContent = function(element, text) {
1417
- if ('textContent' in element) {
1418
- element.textContent = text;
1419
- } else if (element.firstChild &&
1420
- element.firstChild.nodeType == goog.dom.NodeType.TEXT) {
1421
- // If the first child is a text node we just change its data and remove the
1422
- // rest of the children.
1423
- while (element.lastChild != element.firstChild) {
1424
- element.removeChild(element.lastChild);
1425
- }
1426
- element.firstChild.data = text;
1427
- } else {
1428
- goog.dom.removeChildren(element);
1429
- var doc = goog.dom.getOwnerDocument(element);
1430
- element.appendChild(doc.createTextNode(text));
1431
- }
1432
- };
1433
-
1434
-
1435
- /**
1436
- * Gets the outerHTML of a node, which islike innerHTML, except that it
1437
- * actually contains the HTML of the node itself.
1438
- * @param {Element} element The element to get the HTML of.
1439
- * @return {string} The outerHTML of the given element.
1440
- */
1441
- goog.dom.getOuterHtml = function(element) {
1442
- // IE, Opera and WebKit all have outerHTML.
1443
- if ('outerHTML' in element) {
1444
- return element.outerHTML;
1445
- } else {
1446
- var doc = goog.dom.getOwnerDocument(element);
1447
- var div = doc.createElement('div');
1448
- div.appendChild(element.cloneNode(true));
1449
- return div.innerHTML;
1450
- }
1451
- };
1452
-
1453
-
1454
- /**
1455
- * Finds the first descendant node that matches the filter function, using
1456
- * a depth first search. This function offers the most general purpose way
1457
- * of finding a matching element. You may also wish to consider
1458
- * {@code goog.dom.query} which can express many matching criteria using
1459
- * CSS selector expressions. These expressions often result in a more
1460
- * compact representation of the desired result.
1461
- * @see goog.dom.query
1462
- *
1463
- * @param {Node} root The root of the tree to search.
1464
- * @param {function(Node) : boolean} p The filter function.
1465
- * @return {Node|undefined} The found node or undefined if none is found.
1466
- */
1467
- goog.dom.findNode = function(root, p) {
1468
- var rv = [];
1469
- var found = goog.dom.findNodes_(root, p, rv, true);
1470
- return found ? rv[0] : undefined;
1471
- };
1472
-
1473
-
1474
- /**
1475
- * Finds all the descendant nodes that match the filter function, using a
1476
- * a depth first search. This function offers the most general-purpose way
1477
- * of finding a set of matching elements. You may also wish to consider
1478
- * {@code goog.dom.query} which can express many matching criteria using
1479
- * CSS selector expressions. These expressions often result in a more
1480
- * compact representation of the desired result.
1481
-
1482
- * @param {Node} root The root of the tree to search.
1483
- * @param {function(Node) : boolean} p The filter function.
1484
- * @return {Array.<Node>} The found nodes or an empty array if none are found.
1485
- */
1486
- goog.dom.findNodes = function(root, p) {
1487
- var rv = [];
1488
- goog.dom.findNodes_(root, p, rv, false);
1489
- return rv;
1490
- };
1491
-
1492
-
1493
- /**
1494
- * Finds the first or all the descendant nodes that match the filter function,
1495
- * using a depth first search.
1496
- * @param {Node} root The root of the tree to search.
1497
- * @param {function(Node) : boolean} p The filter function.
1498
- * @param {Array.<Node>} rv The found nodes are added to this array.
1499
- * @param {boolean} findOne If true we exit after the first found node.
1500
- * @return {boolean} Whether the search is complete or not. True in case findOne
1501
- * is true and the node is found. False otherwise.
1502
- * @private
1503
- */
1504
- goog.dom.findNodes_ = function(root, p, rv, findOne) {
1505
- if (root != null) {
1506
- for (var i = 0, child; child = root.childNodes[i]; i++) {
1507
- if (p(child)) {
1508
- rv.push(child);
1509
- if (findOne) {
1510
- return true;
1511
- }
1512
- }
1513
- if (goog.dom.findNodes_(child, p, rv, findOne)) {
1514
- return true;
1515
- }
1516
- }
1517
- }
1518
- return false;
1519
- };
1520
-
1521
-
1522
- /**
1523
- * Map of tags whose content to ignore when calculating text length.
1524
- * @type {Object}
1525
- * @private
1526
- */
1527
- goog.dom.TAGS_TO_IGNORE_ = {
1528
- 'SCRIPT': 1,
1529
- 'STYLE': 1,
1530
- 'HEAD': 1,
1531
- 'IFRAME': 1,
1532
- 'OBJECT': 1
1533
- };
1534
-
1535
-
1536
- /**
1537
- * Map of tags which have predefined values with regard to whitespace.
1538
- * @type {Object}
1539
- * @private
1540
- */
1541
- goog.dom.PREDEFINED_TAG_VALUES_ = {'IMG': ' ', 'BR': '\n'};
1542
-
1543
-
1544
- /**
1545
- * Returns true if the element has a tab index that allows it to receive
1546
- * keyboard focus (tabIndex >= 0), false otherwise. Note that form elements
1547
- * natively support keyboard focus, even if they have no tab index.
1548
- * @param {Element} element Element to check.
1549
- * @return {boolean} Whether the element has a tab index that allows keyboard
1550
- * focus.
1551
- * @see http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
1552
- */
1553
- goog.dom.isFocusableTabIndex = function(element) {
1554
- // IE returns 0 for an unset tabIndex, so we must use getAttributeNode(),
1555
- // which returns an object with a 'specified' property if tabIndex is
1556
- // specified. This works on other browsers, too.
1557
- var attrNode = element.getAttributeNode('tabindex'); // Must be lowercase!
1558
- if (attrNode && attrNode.specified) {
1559
- var index = element.tabIndex;
1560
- return goog.isNumber(index) && index >= 0;
1561
- }
1562
- return false;
1563
- };
1564
-
1565
-
1566
- /**
1567
- * Enables or disables keyboard focus support on the element via its tab index.
1568
- * Only elements for which {@link goog.dom.isFocusableTabIndex} returns true
1569
- * (or elements that natively support keyboard focus, like form elements) can
1570
- * receive keyboard focus. See http://go/tabindex for more info.
1571
- * @param {Element} element Element whose tab index is to be changed.
1572
- * @param {boolean} enable Whether to set or remove a tab index on the element
1573
- * that supports keyboard focus.
1574
- */
1575
- goog.dom.setFocusableTabIndex = function(element, enable) {
1576
- if (enable) {
1577
- element.tabIndex = 0;
1578
- } else {
1579
- element.removeAttribute('tabIndex'); // Must be camelCase!
1580
- }
1581
- };
1582
-
1583
-
1584
- /**
1585
- * Returns the text content of the current node, without markup and invisible
1586
- * symbols. New lines are stripped and whitespace is collapsed,
1587
- * such that each character would be visible.
1588
- *
1589
- * In browsers that support it, innerText is used. Other browsers attempt to
1590
- * simulate it via node traversal. Line breaks are canonicalized in IE.
1591
- *
1592
- * @param {Node} node The node from which we are getting content.
1593
- * @return {string} The text content.
1594
- */
1595
- goog.dom.getTextContent = function(node) {
1596
- var textContent;
1597
- // Note(user): IE9, Opera, and Safara 3 support innerText but they include
1598
- // text nodes in script tags. So we revert to use a user agent test here.
1599
- if (goog.dom.BrowserFeature.CAN_USE_INNER_TEXT && ('innerText' in node)) {
1600
- textContent = goog.string.canonicalizeNewlines(node.innerText);
1601
- // Unfortunately .innerText() returns text with &shy; symbols
1602
- // We need to filter it out and then remove duplicate whitespaces
1603
- } else {
1604
- var buf = [];
1605
- goog.dom.getTextContent_(node, buf, true);
1606
- textContent = buf.join('');
1607
- }
1608
-
1609
- // Strip &shy; entities. goog.format.insertWordBreaks inserts them in Opera.
1610
- textContent = textContent.replace(/ \xAD /g, ' ').replace(/\xAD/g, '');
1611
- // Strip &#8203; entities. goog.format.insertWordBreaks inserts them in IE8.
1612
- textContent = textContent.replace(/\u200B/g, '');
1613
-
1614
- // Skip this replacement on IE, which automatically turns &nbsp; into ' '
1615
- // and / +/ into ' ' when reading innerText.
1616
- if (!goog.userAgent.IE) {
1617
- textContent = textContent.replace(/ +/g, ' ');
1618
- }
1619
- if (textContent != ' ') {
1620
- textContent = textContent.replace(/^\s*/, '');
1621
- }
1622
-
1623
- return textContent;
1624
- };
1625
-
1626
-
1627
- /**
1628
- * Returns the text content of the current node, without markup.
1629
- *
1630
- * Unlike {@code getTextContent} this method does not collapse whitespaces
1631
- * or normalize lines breaks.
1632
- *
1633
- * @param {Node} node The node from which we are getting content.
1634
- * @return {string} The raw text content.
1635
- */
1636
- goog.dom.getRawTextContent = function(node) {
1637
- var buf = [];
1638
- goog.dom.getTextContent_(node, buf, false);
1639
-
1640
- return buf.join('');
1641
- };
1642
-
1643
-
1644
- /**
1645
- * Recursive support function for text content retrieval.
1646
- *
1647
- * @param {Node} node The node from which we are getting content.
1648
- * @param {Array} buf string buffer.
1649
- * @param {boolean} normalizeWhitespace Whether to normalize whitespace.
1650
- * @private
1651
- */
1652
- goog.dom.getTextContent_ = function(node, buf, normalizeWhitespace) {
1653
- if (node.nodeName in goog.dom.TAGS_TO_IGNORE_) {
1654
- // ignore certain tags
1655
- } else if (node.nodeType == goog.dom.NodeType.TEXT) {
1656
- if (normalizeWhitespace) {
1657
- buf.push(String(node.nodeValue).replace(/(\r\n|\r|\n)/g, ''));
1658
- } else {
1659
- buf.push(node.nodeValue);
1660
- }
1661
- } else if (node.nodeName in goog.dom.PREDEFINED_TAG_VALUES_) {
1662
- buf.push(goog.dom.PREDEFINED_TAG_VALUES_[node.nodeName]);
1663
- } else {
1664
- var child = node.firstChild;
1665
- while (child) {
1666
- goog.dom.getTextContent_(child, buf, normalizeWhitespace);
1667
- child = child.nextSibling;
1668
- }
1669
- }
1670
- };
1671
-
1672
-
1673
- /**
1674
- * Returns the text length of the text contained in a node, without markup. This
1675
- * is equivalent to the selection length if the node was selected, or the number
1676
- * of cursor movements to traverse the node. Images & BRs take one space. New
1677
- * lines are ignored.
1678
- *
1679
- * @param {Node} node The node whose text content length is being calculated.
1680
- * @return {number} The length of {@code node}'s text content.
1681
- */
1682
- goog.dom.getNodeTextLength = function(node) {
1683
- return goog.dom.getTextContent(node).length;
1684
- };
1685
-
1686
-
1687
- /**
1688
- * Returns the text offset of a node relative to one of its ancestors. The text
1689
- * length is the same as the length calculated by goog.dom.getNodeTextLength.
1690
- *
1691
- * @param {Node} node The node whose offset is being calculated.
1692
- * @param {Node=} opt_offsetParent The node relative to which the offset will
1693
- * be calculated. Defaults to the node's owner document's body.
1694
- * @return {number} The text offset.
1695
- */
1696
- goog.dom.getNodeTextOffset = function(node, opt_offsetParent) {
1697
- var root = opt_offsetParent || goog.dom.getOwnerDocument(node).body;
1698
- var buf = [];
1699
- while (node && node != root) {
1700
- var cur = node;
1701
- while ((cur = cur.previousSibling)) {
1702
- buf.unshift(goog.dom.getTextContent(cur));
1703
- }
1704
- node = node.parentNode;
1705
- }
1706
- // Trim left to deal with FF cases when there might be line breaks and empty
1707
- // nodes at the front of the text
1708
- return goog.string.trimLeft(buf.join('')).replace(/ +/g, ' ').length;
1709
- };
1710
-
1711
-
1712
- /**
1713
- * Returns the node at a given offset in a parent node. If an object is
1714
- * provided for the optional third parameter, the node and the remainder of the
1715
- * offset will stored as properties of this object.
1716
- * @param {Node} parent The parent node.
1717
- * @param {number} offset The offset into the parent node.
1718
- * @param {Object=} opt_result Object to be used to store the return value. The
1719
- * return value will be stored in the form {node: Node, remainder: number}
1720
- * if this object is provided.
1721
- * @return {Node} The node at the given offset.
1722
- */
1723
- goog.dom.getNodeAtOffset = function(parent, offset, opt_result) {
1724
- var stack = [parent], pos = 0, cur;
1725
- while (stack.length > 0 && pos < offset) {
1726
- cur = stack.pop();
1727
- if (cur.nodeName in goog.dom.TAGS_TO_IGNORE_) {
1728
- // ignore certain tags
1729
- } else if (cur.nodeType == goog.dom.NodeType.TEXT) {
1730
- var text = cur.nodeValue.replace(/(\r\n|\r|\n)/g, '').replace(/ +/g, ' ');
1731
- pos += text.length;
1732
- } else if (cur.nodeName in goog.dom.PREDEFINED_TAG_VALUES_) {
1733
- pos += goog.dom.PREDEFINED_TAG_VALUES_[cur.nodeName].length;
1734
- } else {
1735
- for (var i = cur.childNodes.length - 1; i >= 0; i--) {
1736
- stack.push(cur.childNodes[i]);
1737
- }
1738
- }
1739
- }
1740
- if (goog.isObject(opt_result)) {
1741
- opt_result.remainder = cur ? cur.nodeValue.length + offset - pos - 1 : 0;
1742
- opt_result.node = cur;
1743
- }
1744
-
1745
- return cur;
1746
- };
1747
-
1748
-
1749
- /**
1750
- * Returns true if the object is a {@code NodeList}. To qualify as a NodeList,
1751
- * the object must have a numeric length property and an item function (which
1752
- * has type 'string' on IE for some reason).
1753
- * @param {Object} val Object to test.
1754
- * @return {boolean} Whether the object is a NodeList.
1755
- */
1756
- goog.dom.isNodeList = function(val) {
1757
- // TODO(user): Now the isNodeList is part of goog.dom we can use
1758
- // goog.userAgent to make this simpler.
1759
- // A NodeList must have a length property of type 'number' on all platforms.
1760
- if (val && typeof val.length == 'number') {
1761
- // A NodeList is an object everywhere except Safari, where it's a function.
1762
- if (goog.isObject(val)) {
1763
- // A NodeList must have an item function (on non-IE platforms) or an item
1764
- // property of type 'string' (on IE).
1765
- return typeof val.item == 'function' || typeof val.item == 'string';
1766
- } else if (goog.isFunction(val)) {
1767
- // On Safari, a NodeList is a function with an item property that is also
1768
- // a function.
1769
- return typeof val.item == 'function';
1770
- }
1771
- }
1772
-
1773
- // Not a NodeList.
1774
- return false;
1775
- };
1776
-
1777
-
1778
- /**
1779
- * Walks up the DOM hierarchy returning the first ancestor that has the passed
1780
- * tag name and/or class name. If the passed element matches the specified
1781
- * criteria, the element itself is returned.
1782
- * @param {Node} element The DOM node to start with.
1783
- * @param {?string=} opt_tag The tag name to match (or null/undefined to match
1784
- * any node regardless of tag name). Must be uppercase (goog.dom.TagName).
1785
- * @param {?string=} opt_class The class name to match (or null/undefined to
1786
- * match any node regardless of class name).
1787
- * @return {Node} The first ancestor that matches the passed criteria, or
1788
- * null if none match.
1789
- */
1790
- goog.dom.getAncestorByTagNameAndClass = function(element, opt_tag, opt_class) {
1791
- var tagName = opt_tag ? opt_tag.toUpperCase() : null;
1792
- return goog.dom.getAncestor(element,
1793
- function(node) {
1794
- return (!tagName || node.nodeName == tagName) &&
1795
- (!opt_class || goog.dom.classes.has(node, opt_class));
1796
- }, true);
1797
- };
1798
-
1799
-
1800
- /**
1801
- * Walks up the DOM hierarchy returning the first ancestor that has the passed
1802
- * class name. If the passed element matches the specified criteria, the
1803
- * element itself is returned.
1804
- * @param {Node} element The DOM node to start with.
1805
- * @param {?string=} opt_class The class name to match (or null/undefined to
1806
- * match any node regardless of class name).
1807
- * @return {Node} The first ancestor that matches the passed criteria, or
1808
- * null if none match.
1809
- */
1810
- goog.dom.getAncestorByClass = function(element, opt_class) {
1811
- return goog.dom.getAncestorByTagNameAndClass(element, null, opt_class);
1812
- };
1813
-
1814
-
1815
- /**
1816
- * Walks up the DOM hierarchy returning the first ancestor that passes the
1817
- * matcher function.
1818
- * @param {Node} element The DOM node to start with.
1819
- * @param {function(Node) : boolean} matcher A function that returns true if the
1820
- * passed node matches the desired criteria.
1821
- * @param {boolean=} opt_includeNode If true, the node itself is included in
1822
- * the search (the first call to the matcher will pass startElement as
1823
- * the node to test).
1824
- * @param {number=} opt_maxSearchSteps Maximum number of levels to search up the
1825
- * dom.
1826
- * @return {Node} DOM node that matched the matcher, or null if there was
1827
- * no match.
1828
- */
1829
- goog.dom.getAncestor = function(
1830
- element, matcher, opt_includeNode, opt_maxSearchSteps) {
1831
- if (!opt_includeNode) {
1832
- element = element.parentNode;
1833
- }
1834
- var ignoreSearchSteps = opt_maxSearchSteps == null;
1835
- var steps = 0;
1836
- while (element && (ignoreSearchSteps || steps <= opt_maxSearchSteps)) {
1837
- if (matcher(element)) {
1838
- return element;
1839
- }
1840
- element = element.parentNode;
1841
- steps++;
1842
- }
1843
- // Reached the root of the DOM without a match
1844
- return null;
1845
- };
1846
-
1847
-
1848
-
1849
- /**
1850
- * Create an instance of a DOM helper with a new document object.
1851
- * @param {Document=} opt_document Document object to associate with this
1852
- * DOM helper.
1853
- * @constructor
1854
- */
1855
- goog.dom.DomHelper = function(opt_document) {
1856
- /**
1857
- * Reference to the document object to use
1858
- * @type {!Document}
1859
- * @private
1860
- */
1861
- this.document_ = opt_document || goog.global.document || document;
1862
- };
1863
-
1864
-
1865
- /**
1866
- * Gets the dom helper object for the document where the element resides.
1867
- * @param {Node=} opt_node If present, gets the DomHelper for this node.
1868
- * @return {!goog.dom.DomHelper} The DomHelper.
1869
- */
1870
- goog.dom.DomHelper.prototype.getDomHelper = goog.dom.getDomHelper;
1871
-
1872
-
1873
- /**
1874
- * Sets the document object.
1875
- * @param {!Document} document Document object.
1876
- */
1877
- goog.dom.DomHelper.prototype.setDocument = function(document) {
1878
- this.document_ = document;
1879
- };
1880
-
1881
-
1882
- /**
1883
- * Gets the document object being used by the dom library.
1884
- * @return {!Document} Document object.
1885
- */
1886
- goog.dom.DomHelper.prototype.getDocument = function() {
1887
- return this.document_;
1888
- };
1889
-
1890
-
1891
- /**
1892
- * Alias for {@code getElementById}. If a DOM node is passed in then we just
1893
- * return that.
1894
- * @param {string|Element} element Element ID or a DOM node.
1895
- * @return {Element} The element with the given ID, or the node passed in.
1896
- */
1897
- goog.dom.DomHelper.prototype.getElement = function(element) {
1898
- if (goog.isString(element)) {
1899
- return this.document_.getElementById(element);
1900
- } else {
1901
- return element;
1902
- }
1903
- };
1904
-
1905
-
1906
- /**
1907
- * Alias for {@code getElement}.
1908
- * @param {string|Element} element Element ID or a DOM node.
1909
- * @return {Element} The element with the given ID, or the node passed in.
1910
- * @deprecated Use {@link goog.dom.DomHelper.prototype.getElement} instead.
1911
- */
1912
- goog.dom.DomHelper.prototype.$ = goog.dom.DomHelper.prototype.getElement;
1913
-
1914
-
1915
- /**
1916
- * Looks up elements by both tag and class name, using browser native functions
1917
- * ({@code querySelectorAll}, {@code getElementsByTagName} or
1918
- * {@code getElementsByClassName}) where possible. The returned array is a live
1919
- * NodeList or a static list depending on the code path taken.
1920
- *
1921
- * @see goog.dom.query
1922
- *
1923
- * @param {?string=} opt_tag Element tag name or * for all tags.
1924
- * @param {?string=} opt_class Optional class name.
1925
- * @param {Document|Element=} opt_el Optional element to look in.
1926
- * @return { {length: number} } Array-like list of elements (only a length
1927
- * property and numerical indices are guaranteed to exist).
1928
- */
1929
- goog.dom.DomHelper.prototype.getElementsByTagNameAndClass = function(opt_tag,
1930
- opt_class,
1931
- opt_el) {
1932
- return goog.dom.getElementsByTagNameAndClass_(this.document_, opt_tag,
1933
- opt_class, opt_el);
1934
- };
1935
-
1936
-
1937
- /**
1938
- * Returns an array of all the elements with the provided className.
1939
- * @see {goog.dom.query}
1940
- * @param {!string} className the name of the class to look for.
1941
- * @param {Element|Document=} opt_el Optional element to look in.
1942
- * @return { {length: number} } The items found with the class name provided.
1943
- */
1944
- goog.dom.DomHelper.prototype.getElementsByClass = function(className, opt_el) {
1945
- var doc = opt_el || this.document_;
1946
- return goog.dom.getElementsByClass(className, doc);
1947
- };
1948
-
1949
-
1950
- /**
1951
- * Returns the first element we find matching the provided class name.
1952
- * @see {goog.dom.query}
1953
- * @param {!string} className the name of the class to look for.
1954
- * @param {Element|Document=} opt_el Optional element to look in.
1955
- * @return {Element} The first item found with the class name provided.
1956
- */
1957
- goog.dom.DomHelper.prototype.getElementByClass = function(className, opt_el) {
1958
- var doc = opt_el || this.document_;
1959
- return goog.dom.getElementByClass(className, doc);
1960
- };
1961
-
1962
-
1963
- /**
1964
- * Alias for {@code getElementsByTagNameAndClass}.
1965
- * @deprecated Use DomHelper getElementsByTagNameAndClass.
1966
- * @see goog.dom.query
1967
- *
1968
- * @param {?string=} opt_tag Element tag name.
1969
- * @param {?string=} opt_class Optional class name.
1970
- * @param {Element=} opt_el Optional element to look in.
1971
- * @return { {length: number} } Array-like list of elements (only a length
1972
- * property and numerical indices are guaranteed to exist).
1973
- */
1974
- goog.dom.DomHelper.prototype.$$ =
1975
- goog.dom.DomHelper.prototype.getElementsByTagNameAndClass;
1976
-
1977
-
1978
- /**
1979
- * Sets a number of properties on a node.
1980
- * @param {Element} element DOM node to set properties on.
1981
- * @param {Object} properties Hash of property:value pairs.
1982
- */
1983
- goog.dom.DomHelper.prototype.setProperties = goog.dom.setProperties;
1984
-
1985
-
1986
- /**
1987
- * Gets the dimensions of the viewport.
1988
- * @param {Window=} opt_window Optional window element to test. Defaults to
1989
- * the window of the Dom Helper.
1990
- * @return {!goog.math.Size} Object with values 'width' and 'height'.
1991
- */
1992
- goog.dom.DomHelper.prototype.getViewportSize = function(opt_window) {
1993
- // TODO(user): This should not take an argument. That breaks the rule of a
1994
- // a DomHelper representing a single frame/window/document.
1995
- return goog.dom.getViewportSize(opt_window || this.getWindow());
1996
- };
1997
-
1998
-
1999
- /**
2000
- * Calculates the height of the document.
2001
- *
2002
- * @return {number} The height of the document.
2003
- */
2004
- goog.dom.DomHelper.prototype.getDocumentHeight = function() {
2005
- return goog.dom.getDocumentHeight_(this.getWindow());
2006
- };
2007
-
2008
-
2009
- /**
2010
- * Typedef for use with goog.dom.createDom and goog.dom.append.
2011
- * @typedef {Object|string|Array|NodeList}
2012
- */
2013
- goog.dom.Appendable;
2014
-
2015
-
2016
- /**
2017
- * Returns a dom node with a set of attributes. This function accepts varargs
2018
- * for subsequent nodes to be added. Subsequent nodes will be added to the
2019
- * first node as childNodes.
2020
- *
2021
- * So:
2022
- * <code>createDom('div', null, createDom('p'), createDom('p'));</code>
2023
- * would return a div with two child paragraphs
2024
- *
2025
- * An easy way to move all child nodes of an existing element to a new parent
2026
- * element is:
2027
- * <code>createDom('div', null, oldElement.childNodes);</code>
2028
- * which will remove all child nodes from the old element and add them as
2029
- * child nodes of the new DIV.
2030
- *
2031
- * @param {string} tagName Tag to create.
2032
- * @param {Object|string=} opt_attributes If object, then a map of name-value
2033
- * pairs for attributes. If a string, then this is the className of the new
2034
- * element.
2035
- * @param {...goog.dom.Appendable} var_args Further DOM nodes or
2036
- * strings for text nodes. If one of the var_args is an array or
2037
- * NodeList, its elements will be added as childNodes instead.
2038
- * @return {!Element} Reference to a DOM node.
2039
- */
2040
- goog.dom.DomHelper.prototype.createDom = function(tagName,
2041
- opt_attributes,
2042
- var_args) {
2043
- return goog.dom.createDom_(this.document_, arguments);
2044
- };
2045
-
2046
-
2047
- /**
2048
- * Alias for {@code createDom}.
2049
- * @param {string} tagName Tag to create.
2050
- * @param {Object|string=} opt_attributes If object, then a map of name-value
2051
- * pairs for attributes. If a string, then this is the className of the new
2052
- * element.
2053
- * @param {...goog.dom.Appendable} var_args Further DOM nodes or strings for
2054
- * text nodes. If one of the var_args is an array, its children will be
2055
- * added as childNodes instead.
2056
- * @return {!Element} Reference to a DOM node.
2057
- * @deprecated Use {@link goog.dom.DomHelper.prototype.createDom} instead.
2058
- */
2059
- goog.dom.DomHelper.prototype.$dom = goog.dom.DomHelper.prototype.createDom;
2060
-
2061
-
2062
- /**
2063
- * Creates a new element.
2064
- * @param {string} name Tag name.
2065
- * @return {!Element} The new element.
2066
- */
2067
- goog.dom.DomHelper.prototype.createElement = function(name) {
2068
- return this.document_.createElement(name);
2069
- };
2070
-
2071
-
2072
- /**
2073
- * Creates a new text node.
2074
- * @param {string} content Content.
2075
- * @return {!Text} The new text node.
2076
- */
2077
- goog.dom.DomHelper.prototype.createTextNode = function(content) {
2078
- return this.document_.createTextNode(content);
2079
- };
2080
-
2081
-
2082
- /**
2083
- * Create a table.
2084
- * @param {number} rows The number of rows in the table. Must be >= 1.
2085
- * @param {number} columns The number of columns in the table. Must be >= 1.
2086
- * @param {boolean=} opt_fillWithNbsp If true, fills table entries with nsbps.
2087
- * @return {!Element} The created table.
2088
- */
2089
- goog.dom.DomHelper.prototype.createTable = function(rows, columns,
2090
- opt_fillWithNbsp) {
2091
- return goog.dom.createTable_(this.document_, rows, columns,
2092
- !!opt_fillWithNbsp);
2093
- };
2094
-
2095
-
2096
- /**
2097
- * Converts an HTML string into a node or a document fragment. A single Node
2098
- * is used if the {@code htmlString} only generates a single node. If the
2099
- * {@code htmlString} generates multiple nodes then these are put inside a
2100
- * {@code DocumentFragment}.
2101
- *
2102
- * @param {string} htmlString The HTML string to convert.
2103
- * @return {!Node} The resulting node.
2104
- */
2105
- goog.dom.DomHelper.prototype.htmlToDocumentFragment = function(htmlString) {
2106
- return goog.dom.htmlToDocumentFragment_(this.document_, htmlString);
2107
- };
2108
-
2109
-
2110
- /**
2111
- * Returns the compatMode of the document.
2112
- * @return {string} The result is either CSS1Compat or BackCompat.
2113
- * @deprecated use goog.dom.DomHelper.prototype.isCss1CompatMode instead.
2114
- */
2115
- goog.dom.DomHelper.prototype.getCompatMode = function() {
2116
- return this.isCss1CompatMode() ? 'CSS1Compat' : 'BackCompat';
2117
- };
2118
-
2119
-
2120
- /**
2121
- * Returns true if the browser is in "CSS1-compatible" (standards-compliant)
2122
- * mode, false otherwise.
2123
- * @return {boolean} True if in CSS1-compatible mode.
2124
- */
2125
- goog.dom.DomHelper.prototype.isCss1CompatMode = function() {
2126
- return goog.dom.isCss1CompatMode_(this.document_);
2127
- };
2128
-
2129
-
2130
- /**
2131
- * Gets the window object associated with the document.
2132
- * @return {!Window} The window associated with the given document.
2133
- */
2134
- goog.dom.DomHelper.prototype.getWindow = function() {
2135
- return goog.dom.getWindow_(this.document_);
2136
- };
2137
-
2138
-
2139
- /**
2140
- * Gets the document scroll element.
2141
- * @return {Element} Scrolling element.
2142
- */
2143
- goog.dom.DomHelper.prototype.getDocumentScrollElement = function() {
2144
- return goog.dom.getDocumentScrollElement_(this.document_);
2145
- };
2146
-
2147
-
2148
- /**
2149
- * Gets the document scroll distance as a coordinate object.
2150
- * @return {!goog.math.Coordinate} Object with properties 'x' and 'y'.
2151
- */
2152
- goog.dom.DomHelper.prototype.getDocumentScroll = function() {
2153
- return goog.dom.getDocumentScroll_(this.document_);
2154
- };
2155
-
2156
-
2157
- /**
2158
- * Appends a child to a node.
2159
- * @param {Node} parent Parent.
2160
- * @param {Node} child Child.
2161
- */
2162
- goog.dom.DomHelper.prototype.appendChild = goog.dom.appendChild;
2163
-
2164
-
2165
- /**
2166
- * Appends a node with text or other nodes.
2167
- * @param {!Node} parent The node to append nodes to.
2168
- * @param {...goog.dom.Appendable} var_args The things to append to the node.
2169
- * If this is a Node it is appended as is.
2170
- * If this is a string then a text node is appended.
2171
- * If this is an array like object then fields 0 to length - 1 are appended.
2172
- */
2173
- goog.dom.DomHelper.prototype.append = goog.dom.append;
2174
-
2175
-
2176
- /**
2177
- * Removes all the child nodes on a DOM node.
2178
- * @param {Node} node Node to remove children from.
2179
- */
2180
- goog.dom.DomHelper.prototype.removeChildren = goog.dom.removeChildren;
2181
-
2182
-
2183
- /**
2184
- * Inserts a new node before an existing reference node (i.e., as the previous
2185
- * sibling). If the reference node has no parent, then does nothing.
2186
- * @param {Node} newNode Node to insert.
2187
- * @param {Node} refNode Reference node to insert before.
2188
- */
2189
- goog.dom.DomHelper.prototype.insertSiblingBefore = goog.dom.insertSiblingBefore;
2190
-
2191
-
2192
- /**
2193
- * Inserts a new node after an existing reference node (i.e., as the next
2194
- * sibling). If the reference node has no parent, then does nothing.
2195
- * @param {Node} newNode Node to insert.
2196
- * @param {Node} refNode Reference node to insert after.
2197
- */
2198
- goog.dom.DomHelper.prototype.insertSiblingAfter = goog.dom.insertSiblingAfter;
2199
-
2200
-
2201
- /**
2202
- * Removes a node from its parent.
2203
- * @param {Node} node The node to remove.
2204
- * @return {Node} The node removed if removed; else, null.
2205
- */
2206
- goog.dom.DomHelper.prototype.removeNode = goog.dom.removeNode;
2207
-
2208
-
2209
- /**
2210
- * Replaces a node in the DOM tree. Will do nothing if {@code oldNode} has no
2211
- * parent.
2212
- * @param {Node} newNode Node to insert.
2213
- * @param {Node} oldNode Node to replace.
2214
- */
2215
- goog.dom.DomHelper.prototype.replaceNode = goog.dom.replaceNode;
2216
-
2217
-
2218
- /**
2219
- * Flattens an element. That is, removes it and replace it with its children.
2220
- * @param {Element} element The element to flatten.
2221
- * @return {Element|undefined} The original element, detached from the document
2222
- * tree, sans children, or undefined if the element was already not in the
2223
- * document.
2224
- */
2225
- goog.dom.DomHelper.prototype.flattenElement = goog.dom.flattenElement;
2226
-
2227
-
2228
- /**
2229
- * Returns the first child node that is an element.
2230
- * @param {Node} node The node to get the first child element of.
2231
- * @return {Element} The first child node of {@code node} that is an element.
2232
- */
2233
- goog.dom.DomHelper.prototype.getFirstElementChild =
2234
- goog.dom.getFirstElementChild;
2235
-
2236
-
2237
- /**
2238
- * Returns the last child node that is an element.
2239
- * @param {Node} node The node to get the last child element of.
2240
- * @return {Element} The last child node of {@code node} that is an element.
2241
- */
2242
- goog.dom.DomHelper.prototype.getLastElementChild = goog.dom.getLastElementChild;
2243
-
2244
-
2245
- /**
2246
- * Returns the first next sibling that is an element.
2247
- * @param {Node} node The node to get the next sibling element of.
2248
- * @return {Element} The next sibling of {@code node} that is an element.
2249
- */
2250
- goog.dom.DomHelper.prototype.getNextElementSibling =
2251
- goog.dom.getNextElementSibling;
2252
-
2253
-
2254
- /**
2255
- * Returns the first previous sibling that is an element.
2256
- * @param {Node} node The node to get the previous sibling element of.
2257
- * @return {Element} The first previous sibling of {@code node} that is
2258
- * an element.
2259
- */
2260
- goog.dom.DomHelper.prototype.getPreviousElementSibling =
2261
- goog.dom.getPreviousElementSibling;
2262
-
2263
-
2264
- /**
2265
- * Returns the next node in source order from the given node.
2266
- * @param {Node} node The node.
2267
- * @return {Node} The next node in the DOM tree, or null if this was the last
2268
- * node.
2269
- */
2270
- goog.dom.DomHelper.prototype.getNextNode =
2271
- goog.dom.getNextNode;
2272
-
2273
-
2274
- /**
2275
- * Returns the previous node in source order from the given node.
2276
- * @param {Node} node The node.
2277
- * @return {Node} The previous node in the DOM tree, or null if this was the
2278
- * first node.
2279
- */
2280
- goog.dom.DomHelper.prototype.getPreviousNode =
2281
- goog.dom.getPreviousNode;
2282
-
2283
-
2284
- /**
2285
- * Whether the object looks like a DOM node.
2286
- * @param {*} obj The object being tested for node likeness.
2287
- * @return {boolean} Whether the object looks like a DOM node.
2288
- */
2289
- goog.dom.DomHelper.prototype.isNodeLike = goog.dom.isNodeLike;
2290
-
2291
-
2292
- /**
2293
- * Whether a node contains another node.
2294
- * @param {Node} parent The node that should contain the other node.
2295
- * @param {Node} descendant The node to test presence of.
2296
- * @return {boolean} Whether the parent node contains the descendent node.
2297
- */
2298
- goog.dom.DomHelper.prototype.contains = goog.dom.contains;
2299
-
2300
-
2301
- /**
2302
- * Returns the owner document for a node.
2303
- * @param {Node} node The node to get the document for.
2304
- * @return {!Document} The document owning the node.
2305
- */
2306
- goog.dom.DomHelper.prototype.getOwnerDocument = goog.dom.getOwnerDocument;
2307
-
2308
-
2309
- /**
2310
- * Cross browser function for getting the document element of an iframe.
2311
- * @param {HTMLIFrameElement|HTMLFrameElement} iframe Iframe element.
2312
- * @return {!HTMLDocument} The frame content document.
2313
- */
2314
- goog.dom.DomHelper.prototype.getFrameContentDocument =
2315
- goog.dom.getFrameContentDocument;
2316
-
2317
-
2318
- /**
2319
- * Cross browser function for getting the window of a frame or iframe.
2320
- * @param {HTMLIFrameElement|HTMLFrameElement} frame Frame element.
2321
- * @return {Window} The window associated with the given frame.
2322
- */
2323
- goog.dom.DomHelper.prototype.getFrameContentWindow =
2324
- goog.dom.getFrameContentWindow;
2325
-
2326
-
2327
- /**
2328
- * Cross browser function for setting the text content of an element.
2329
- * @param {Element} element The element to change the text content of.
2330
- * @param {string} text The string that should replace the current element
2331
- * content with.
2332
- */
2333
- goog.dom.DomHelper.prototype.setTextContent = goog.dom.setTextContent;
2334
-
2335
-
2336
- /**
2337
- * Finds the first descendant node that matches the filter function. This does
2338
- * a depth first search.
2339
- * @param {Node} root The root of the tree to search.
2340
- * @param {function(Node) : boolean} p The filter function.
2341
- * @return {(Node, undefined)} The found node or undefined if none is found.
2342
- */
2343
- goog.dom.DomHelper.prototype.findNode = goog.dom.findNode;
2344
-
2345
-
2346
- /**
2347
- * Finds all the descendant nodes that matches the filter function. This does a
2348
- * depth first search.
2349
- * @param {Node} root The root of the tree to search.
2350
- * @param {function(Node) : boolean} p The filter function.
2351
- * @return {Array.<Node>} The found nodes or an empty array if none are found.
2352
- */
2353
- goog.dom.DomHelper.prototype.findNodes = goog.dom.findNodes;
2354
-
2355
-
2356
- /**
2357
- * Returns the text contents of the current node, without markup. New lines are
2358
- * stripped and whitespace is collapsed, such that each character would be
2359
- * visible.
2360
- *
2361
- * In browsers that support it, innerText is used. Other browsers attempt to
2362
- * simulate it via node traversal. Line breaks are canonicalized in IE.
2363
- *
2364
- * @param {Node} node The node from which we are getting content.
2365
- * @return {string} The text content.
2366
- */
2367
- goog.dom.DomHelper.prototype.getTextContent = goog.dom.getTextContent;
2368
-
2369
-
2370
- /**
2371
- * Returns the text length of the text contained in a node, without markup. This
2372
- * is equivalent to the selection length if the node was selected, or the number
2373
- * of cursor movements to traverse the node. Images & BRs take one space. New
2374
- * lines are ignored.
2375
- *
2376
- * @param {Node} node The node whose text content length is being calculated.
2377
- * @return {number} The length of {@code node}'s text content.
2378
- */
2379
- goog.dom.DomHelper.prototype.getNodeTextLength = goog.dom.getNodeTextLength;
2380
-
2381
-
2382
- /**
2383
- * Returns the text offset of a node relative to one of its ancestors. The text
2384
- * length is the same as the length calculated by
2385
- * {@code goog.dom.getNodeTextLength}.
2386
- *
2387
- * @param {Node} node The node whose offset is being calculated.
2388
- * @param {Node=} opt_offsetParent Defaults to the node's owner document's body.
2389
- * @return {number} The text offset.
2390
- */
2391
- goog.dom.DomHelper.prototype.getNodeTextOffset = goog.dom.getNodeTextOffset;
2392
-
2393
-
2394
- /**
2395
- * Walks up the DOM hierarchy returning the first ancestor that has the passed
2396
- * tag name and/or class name. If the passed element matches the specified
2397
- * criteria, the element itself is returned.
2398
- * @param {Node} element The DOM node to start with.
2399
- * @param {?string=} opt_tag The tag name to match (or null/undefined to match
2400
- * any node regardless of tag name). Must be uppercase (goog.dom.TagName).
2401
- * @param {?string=} opt_class The class name to match (or null/undefined to
2402
- * match any node regardless of class name).
2403
- * @return {Node} The first ancestor that matches the passed criteria, or
2404
- * null if none match.
2405
- */
2406
- goog.dom.DomHelper.prototype.getAncestorByTagNameAndClass =
2407
- goog.dom.getAncestorByTagNameAndClass;
2408
-
2409
-
2410
- /**
2411
- * Walks up the DOM hierarchy returning the first ancestor that passes the
2412
- * matcher function.
2413
- * @param {Node} element The DOM node to start with.
2414
- * @param {function(Node) : boolean} matcher A function that returns true if the
2415
- * passed node matches the desired criteria.
2416
- * @param {boolean=} opt_includeNode If true, the node itself is included in
2417
- * the search (the first call to the matcher will pass startElement as
2418
- * the node to test).
2419
- * @param {number=} opt_maxSearchSteps Maximum number of levels to search up the
2420
- * dom.
2421
- * @return {Node} DOM node that matched the matcher, or null if there was
2422
- * no match.
2423
- */
2424
- goog.dom.DomHelper.prototype.getAncestor = goog.dom.getAncestor;