closure 1.1.692

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 (1494) hide show
  1. data/.gitignore +6 -0
  2. data/.yardopts +3 -0
  3. data/LICENSE +202 -0
  4. data/README.md +26 -0
  5. data/beanshell/LICENSE +12 -0
  6. data/beanshell/bsh-core-2.0b4.jar +0 -0
  7. data/closure-compiler/COPYING +202 -0
  8. data/closure-compiler/README +278 -0
  9. data/closure-compiler/compiler.jar +0 -0
  10. data/closure-library/AUTHORS +12 -0
  11. data/closure-library/LICENSE +176 -0
  12. data/closure-library/README +6 -0
  13. data/closure-library/all_tests.html +113 -0
  14. data/closure-library/alltests.js +16 -0
  15. data/closure-library/closure/bin/build/closurebuilder.py +257 -0
  16. data/closure-library/closure/bin/build/depstree.py +186 -0
  17. data/closure-library/closure/bin/build/depstree_test.py +127 -0
  18. data/closure-library/closure/bin/build/depswriter.py +197 -0
  19. data/closure-library/closure/bin/build/jscompiler.py +69 -0
  20. data/closure-library/closure/bin/build/source.py +86 -0
  21. data/closure-library/closure/bin/build/source_test.py +57 -0
  22. data/closure-library/closure/bin/build/treescan.py +78 -0
  23. data/closure-library/closure/bin/calcdeps.py +570 -0
  24. data/closure-library/closure/bin/scopify.py +211 -0
  25. data/closure-library/closure/css/inlay/g-base.css +82 -0
  26. data/closure-library/closure/css/inlay/g-fixed.css +158 -0
  27. data/closure-library/closure/css/inlay/g-ratio.css +253 -0
  28. data/closure-library/closure/goog/array/array.js +1300 -0
  29. data/closure-library/closure/goog/array/array_test.html +1524 -0
  30. data/closure-library/closure/goog/asserts/asserts.js +277 -0
  31. data/closure-library/closure/goog/asserts/asserts_test.html +163 -0
  32. data/closure-library/closure/goog/async/conditionaldelay.js +238 -0
  33. data/closure-library/closure/goog/async/conditionaldelay_test.html +227 -0
  34. data/closure-library/closure/goog/async/delay.js +174 -0
  35. data/closure-library/closure/goog/async/delay_test.html +148 -0
  36. data/closure-library/closure/goog/async/throttle.js +189 -0
  37. data/closure-library/closure/goog/async/throttle_test.html +102 -0
  38. data/closure-library/closure/goog/base.js +1471 -0
  39. data/closure-library/closure/goog/base_test.html +1166 -0
  40. data/closure-library/closure/goog/bootstrap/webworkers.js +37 -0
  41. data/closure-library/closure/goog/color/alpha.js +436 -0
  42. data/closure-library/closure/goog/color/alpha_test.html +234 -0
  43. data/closure-library/closure/goog/color/color.js +757 -0
  44. data/closure-library/closure/goog/color/color_test.html +645 -0
  45. data/closure-library/closure/goog/color/names.js +176 -0
  46. data/closure-library/closure/goog/crypt/arc4.js +141 -0
  47. data/closure-library/closure/goog/crypt/arc4_test.html +42 -0
  48. data/closure-library/closure/goog/crypt/base64.js +267 -0
  49. data/closure-library/closure/goog/crypt/base64_test.html +106 -0
  50. data/closure-library/closure/goog/crypt/basen.js +242 -0
  51. data/closure-library/closure/goog/crypt/basen_test.html +167 -0
  52. data/closure-library/closure/goog/crypt/crypt.js +103 -0
  53. data/closure-library/closure/goog/crypt/crypt_test.html +68 -0
  54. data/closure-library/closure/goog/crypt/hash32.js +184 -0
  55. data/closure-library/closure/goog/crypt/hash32_test.html +287 -0
  56. data/closure-library/closure/goog/crypt/sha1.js +238 -0
  57. data/closure-library/closure/goog/crypt/sha1_test.html +47 -0
  58. data/closure-library/closure/goog/css/autocomplete.css +43 -0
  59. data/closure-library/closure/goog/css/bubble.css +84 -0
  60. data/closure-library/closure/goog/css/button.css +38 -0
  61. data/closure-library/closure/goog/css/charpicker.css +201 -0
  62. data/closure-library/closure/goog/css/checkbox.css +38 -0
  63. data/closure-library/closure/goog/css/colormenubutton.css +25 -0
  64. data/closure-library/closure/goog/css/colorpalette.css +54 -0
  65. data/closure-library/closure/goog/css/colorpicker-simplegrid.css +50 -0
  66. data/closure-library/closure/goog/css/combobox.css +57 -0
  67. data/closure-library/closure/goog/css/common.css +41 -0
  68. data/closure-library/closure/goog/css/css3button.css +77 -0
  69. data/closure-library/closure/goog/css/css3menubutton.css +23 -0
  70. data/closure-library/closure/goog/css/custombutton.css +164 -0
  71. data/closure-library/closure/goog/css/datepicker.css +148 -0
  72. data/closure-library/closure/goog/css/dialog.css +72 -0
  73. data/closure-library/closure/goog/css/dimensionpicker.css +47 -0
  74. data/closure-library/closure/goog/css/dragdropdetector.css +48 -0
  75. data/closure-library/closure/goog/css/editor/bubble.css +73 -0
  76. data/closure-library/closure/goog/css/editor/dialog.css +66 -0
  77. data/closure-library/closure/goog/css/editor/linkdialog.css +36 -0
  78. data/closure-library/closure/goog/css/editortoolbar.css +225 -0
  79. data/closure-library/closure/goog/css/filteredmenu.css +30 -0
  80. data/closure-library/closure/goog/css/filterobservingmenuitem.css +25 -0
  81. data/closure-library/closure/goog/css/flatbutton.css +65 -0
  82. data/closure-library/closure/goog/css/flatmenubutton.css +63 -0
  83. data/closure-library/closure/goog/css/hovercard.css +51 -0
  84. data/closure-library/closure/goog/css/hsvapalette.css +231 -0
  85. data/closure-library/closure/goog/css/hsvpalette.css +179 -0
  86. data/closure-library/closure/goog/css/imagelessbutton.css +160 -0
  87. data/closure-library/closure/goog/css/imagelessmenubutton.css +23 -0
  88. data/closure-library/closure/goog/css/inputdatepicker.css +12 -0
  89. data/closure-library/closure/goog/css/linkbutton.css +26 -0
  90. data/closure-library/closure/goog/css/menu.css +27 -0
  91. data/closure-library/closure/goog/css/menubutton.css +169 -0
  92. data/closure-library/closure/goog/css/menuitem.css +96 -0
  93. data/closure-library/closure/goog/css/menuseparator.css +19 -0
  94. data/closure-library/closure/goog/css/multitestrunner.css +121 -0
  95. data/closure-library/closure/goog/css/offline.css +147 -0
  96. data/closure-library/closure/goog/css/palette.css +36 -0
  97. data/closure-library/closure/goog/css/popupdatepicker.css +17 -0
  98. data/closure-library/closure/goog/css/roundedpanel.css +29 -0
  99. data/closure-library/closure/goog/css/roundedtab.css +158 -0
  100. data/closure-library/closure/goog/css/submenu.css +28 -0
  101. data/closure-library/closure/goog/css/tab.css +91 -0
  102. data/closure-library/closure/goog/css/tabbar.css +52 -0
  103. data/closure-library/closure/goog/css/tablesorter.css +14 -0
  104. data/closure-library/closure/goog/css/toolbar.css +400 -0
  105. data/closure-library/closure/goog/css/tooltip.css +14 -0
  106. data/closure-library/closure/goog/css/tree.css +147 -0
  107. data/closure-library/closure/goog/css/tristatemenuitem.css +43 -0
  108. data/closure-library/closure/goog/cssom/cssom.js +447 -0
  109. data/closure-library/closure/goog/cssom/cssom_test.html +343 -0
  110. data/closure-library/closure/goog/cssom/cssom_test_import_1.css +11 -0
  111. data/closure-library/closure/goog/cssom/cssom_test_import_2.css +10 -0
  112. data/closure-library/closure/goog/cssom/cssom_test_link_1.css +10 -0
  113. data/closure-library/closure/goog/cssom/iframe/style.js +1020 -0
  114. data/closure-library/closure/goog/cssom/iframe/style_test.html +391 -0
  115. data/closure-library/closure/goog/cssom/iframe/style_test_import.css +10 -0
  116. data/closure-library/closure/goog/datasource/datamanager.js +566 -0
  117. data/closure-library/closure/goog/datasource/datasource.js +646 -0
  118. data/closure-library/closure/goog/datasource/datasource_test.html +265 -0
  119. data/closure-library/closure/goog/datasource/expr.js +544 -0
  120. data/closure-library/closure/goog/datasource/expr_test.html +97 -0
  121. data/closure-library/closure/goog/datasource/fastdatanode.js +792 -0
  122. data/closure-library/closure/goog/datasource/fastdatanode_test.html +254 -0
  123. data/closure-library/closure/goog/datasource/jsdatasource.js +460 -0
  124. data/closure-library/closure/goog/datasource/jsondatasource.js +146 -0
  125. data/closure-library/closure/goog/datasource/jsxmlhttpdatasource.js +191 -0
  126. data/closure-library/closure/goog/datasource/jsxmlhttpdatasource_test.html +94 -0
  127. data/closure-library/closure/goog/datasource/xmldatasource.js +407 -0
  128. data/closure-library/closure/goog/date/date.js +1642 -0
  129. data/closure-library/closure/goog/date/date_test.html +1293 -0
  130. data/closure-library/closure/goog/date/datelike.js +27 -0
  131. data/closure-library/closure/goog/date/daterange.js +398 -0
  132. data/closure-library/closure/goog/date/daterange_test.html +213 -0
  133. data/closure-library/closure/goog/date/relative.js +425 -0
  134. data/closure-library/closure/goog/date/relative_test.html +124 -0
  135. data/closure-library/closure/goog/date/utcdatetime.js +178 -0
  136. data/closure-library/closure/goog/date/utcdatetime_test.html +119 -0
  137. data/closure-library/closure/goog/debug/console.js +138 -0
  138. data/closure-library/closure/goog/debug/debug.js +452 -0
  139. data/closure-library/closure/goog/debug/debug_test.html +32 -0
  140. data/closure-library/closure/goog/debug/debugwindow.js +582 -0
  141. data/closure-library/closure/goog/debug/devcss/devcss.js +435 -0
  142. data/closure-library/closure/goog/debug/devcss/devcss_test.html +365 -0
  143. data/closure-library/closure/goog/debug/devcss/devcssrunner.js +26 -0
  144. data/closure-library/closure/goog/debug/divconsole.js +141 -0
  145. data/closure-library/closure/goog/debug/enhanceerror_test.html +138 -0
  146. data/closure-library/closure/goog/debug/entrypointregistry.js +111 -0
  147. data/closure-library/closure/goog/debug/entrypointregistry_test.html +63 -0
  148. data/closure-library/closure/goog/debug/error.js +47 -0
  149. data/closure-library/closure/goog/debug/error_test.html +85 -0
  150. data/closure-library/closure/goog/debug/errorhandler.js +234 -0
  151. data/closure-library/closure/goog/debug/errorhandler_async_test.html +112 -0
  152. data/closure-library/closure/goog/debug/errorhandler_test.html +186 -0
  153. data/closure-library/closure/goog/debug/errorhandlerweakdep.js +38 -0
  154. data/closure-library/closure/goog/debug/errorreporter.js +324 -0
  155. data/closure-library/closure/goog/debug/errorreporter_test.html +289 -0
  156. data/closure-library/closure/goog/debug/fancywindow.js +265 -0
  157. data/closure-library/closure/goog/debug/formatter.js +314 -0
  158. data/closure-library/closure/goog/debug/gcdiagnostics.js +143 -0
  159. data/closure-library/closure/goog/debug/logbuffer.js +147 -0
  160. data/closure-library/closure/goog/debug/logbuffer_test.html +105 -0
  161. data/closure-library/closure/goog/debug/logger.js +809 -0
  162. data/closure-library/closure/goog/debug/logger_test.html +208 -0
  163. data/closure-library/closure/goog/debug/logrecord.js +271 -0
  164. data/closure-library/closure/goog/debug/reflect.js +159 -0
  165. data/closure-library/closure/goog/debug/reflect_test.html +81 -0
  166. data/closure-library/closure/goog/debug/relativetimeprovider.js +83 -0
  167. data/closure-library/closure/goog/debug/tracer.js +750 -0
  168. data/closure-library/closure/goog/debug/tracer_test.html +57 -0
  169. data/closure-library/closure/goog/demos/advancedtooltip.html +78 -0
  170. data/closure-library/closure/goog/demos/animationqueue.html +149 -0
  171. data/closure-library/closure/goog/demos/autocomplete-basic.html +56 -0
  172. data/closure-library/closure/goog/demos/autocompleteremote.html +40 -0
  173. data/closure-library/closure/goog/demos/autocompleteremotedata.js +18 -0
  174. data/closure-library/closure/goog/demos/autocompleterichremote.html +137 -0
  175. data/closure-library/closure/goog/demos/autocompleterichremotedata.js +33 -0
  176. data/closure-library/closure/goog/demos/bidiinput.html +72 -0
  177. data/closure-library/closure/goog/demos/bubble.html +250 -0
  178. data/closure-library/closure/goog/demos/button.html +395 -0
  179. data/closure-library/closure/goog/demos/charcounter.html +57 -0
  180. data/closure-library/closure/goog/demos/charpicker.html +64 -0
  181. data/closure-library/closure/goog/demos/checkbox.html +122 -0
  182. data/closure-library/closure/goog/demos/color-contrast.html +60 -0
  183. data/closure-library/closure/goog/demos/colormenubutton.html +213 -0
  184. data/closure-library/closure/goog/demos/colorpicker.html +43 -0
  185. data/closure-library/closure/goog/demos/combobox.html +125 -0
  186. data/closure-library/closure/goog/demos/container.html +670 -0
  187. data/closure-library/closure/goog/demos/control.html +477 -0
  188. data/closure-library/closure/goog/demos/css/demo.css +75 -0
  189. data/closure-library/closure/goog/demos/css/emojipicker.css +36 -0
  190. data/closure-library/closure/goog/demos/css/emojisprite.css +92 -0
  191. data/closure-library/closure/goog/demos/css3button.html +166 -0
  192. data/closure-library/closure/goog/demos/css3menubutton.html +285 -0
  193. data/closure-library/closure/goog/demos/cssspriteanimation.html +80 -0
  194. data/closure-library/closure/goog/demos/datepicker.html +183 -0
  195. data/closure-library/closure/goog/demos/debug.html +119 -0
  196. data/closure-library/closure/goog/demos/depsgraph.html +221 -0
  197. data/closure-library/closure/goog/demos/dialog.html +156 -0
  198. data/closure-library/closure/goog/demos/dimensionpicker.html +108 -0
  199. data/closure-library/closure/goog/demos/dimensionpicker_rtl.html +123 -0
  200. data/closure-library/closure/goog/demos/dom_selection.html +88 -0
  201. data/closure-library/closure/goog/demos/drag.html +191 -0
  202. data/closure-library/closure/goog/demos/dragdrop.html +263 -0
  203. data/closure-library/closure/goog/demos/dragdropdetector.html +46 -0
  204. data/closure-library/closure/goog/demos/dragdropdetector_target.html +17 -0
  205. data/closure-library/closure/goog/demos/dragger.html +83 -0
  206. data/closure-library/closure/goog/demos/draglistgroup.html +261 -0
  207. data/closure-library/closure/goog/demos/drilldownrow.html +78 -0
  208. data/closure-library/closure/goog/demos/editor/deps.js +20 -0
  209. data/closure-library/closure/goog/demos/editor/editor.html +139 -0
  210. data/closure-library/closure/goog/demos/editor/field_basic.html +74 -0
  211. data/closure-library/closure/goog/demos/editor/helloworld.html +91 -0
  212. data/closure-library/closure/goog/demos/editor/helloworld.js +81 -0
  213. data/closure-library/closure/goog/demos/editor/helloworld_test.html +75 -0
  214. data/closure-library/closure/goog/demos/editor/helloworlddialog.js +163 -0
  215. data/closure-library/closure/goog/demos/editor/helloworlddialog_test.html +100 -0
  216. data/closure-library/closure/goog/demos/editor/helloworlddialogplugin.js +110 -0
  217. data/closure-library/closure/goog/demos/editor/helloworlddialogplugin_test.html +198 -0
  218. data/closure-library/closure/goog/demos/editor/seamlessfield.html +106 -0
  219. data/closure-library/closure/goog/demos/effects.html +142 -0
  220. data/closure-library/closure/goog/demos/emoji/200.gif +0 -0
  221. data/closure-library/closure/goog/demos/emoji/201.gif +0 -0
  222. data/closure-library/closure/goog/demos/emoji/202.gif +0 -0
  223. data/closure-library/closure/goog/demos/emoji/203.gif +0 -0
  224. data/closure-library/closure/goog/demos/emoji/204.gif +0 -0
  225. data/closure-library/closure/goog/demos/emoji/205.gif +0 -0
  226. data/closure-library/closure/goog/demos/emoji/206.gif +0 -0
  227. data/closure-library/closure/goog/demos/emoji/2BC.gif +0 -0
  228. data/closure-library/closure/goog/demos/emoji/2BD.gif +0 -0
  229. data/closure-library/closure/goog/demos/emoji/2BE.gif +0 -0
  230. data/closure-library/closure/goog/demos/emoji/2BF.gif +0 -0
  231. data/closure-library/closure/goog/demos/emoji/2C0.gif +0 -0
  232. data/closure-library/closure/goog/demos/emoji/2C1.gif +0 -0
  233. data/closure-library/closure/goog/demos/emoji/2C2.gif +0 -0
  234. data/closure-library/closure/goog/demos/emoji/2C3.gif +0 -0
  235. data/closure-library/closure/goog/demos/emoji/2C4.gif +0 -0
  236. data/closure-library/closure/goog/demos/emoji/2C5.gif +0 -0
  237. data/closure-library/closure/goog/demos/emoji/2C6.gif +0 -0
  238. data/closure-library/closure/goog/demos/emoji/2C7.gif +0 -0
  239. data/closure-library/closure/goog/demos/emoji/2C8.gif +0 -0
  240. data/closure-library/closure/goog/demos/emoji/2C9.gif +0 -0
  241. data/closure-library/closure/goog/demos/emoji/2CA.gif +0 -0
  242. data/closure-library/closure/goog/demos/emoji/2CB.gif +0 -0
  243. data/closure-library/closure/goog/demos/emoji/2CC.gif +0 -0
  244. data/closure-library/closure/goog/demos/emoji/2CD.gif +0 -0
  245. data/closure-library/closure/goog/demos/emoji/2CE.gif +0 -0
  246. data/closure-library/closure/goog/demos/emoji/2CF.gif +0 -0
  247. data/closure-library/closure/goog/demos/emoji/2D0.gif +0 -0
  248. data/closure-library/closure/goog/demos/emoji/2D1.gif +0 -0
  249. data/closure-library/closure/goog/demos/emoji/2D2.gif +0 -0
  250. data/closure-library/closure/goog/demos/emoji/2D3.gif +0 -0
  251. data/closure-library/closure/goog/demos/emoji/2D4.gif +0 -0
  252. data/closure-library/closure/goog/demos/emoji/2D5.gif +0 -0
  253. data/closure-library/closure/goog/demos/emoji/2D6.gif +0 -0
  254. data/closure-library/closure/goog/demos/emoji/2D7.gif +0 -0
  255. data/closure-library/closure/goog/demos/emoji/2D8.gif +0 -0
  256. data/closure-library/closure/goog/demos/emoji/2D9.gif +0 -0
  257. data/closure-library/closure/goog/demos/emoji/2DA.gif +0 -0
  258. data/closure-library/closure/goog/demos/emoji/2DB.gif +0 -0
  259. data/closure-library/closure/goog/demos/emoji/2DC.gif +0 -0
  260. data/closure-library/closure/goog/demos/emoji/2DD.gif +0 -0
  261. data/closure-library/closure/goog/demos/emoji/2DE.gif +0 -0
  262. data/closure-library/closure/goog/demos/emoji/2DF.gif +0 -0
  263. data/closure-library/closure/goog/demos/emoji/2E0.gif +0 -0
  264. data/closure-library/closure/goog/demos/emoji/2E1.gif +0 -0
  265. data/closure-library/closure/goog/demos/emoji/2E2.gif +0 -0
  266. data/closure-library/closure/goog/demos/emoji/2E3.gif +0 -0
  267. data/closure-library/closure/goog/demos/emoji/2E4.gif +0 -0
  268. data/closure-library/closure/goog/demos/emoji/2E5.gif +0 -0
  269. data/closure-library/closure/goog/demos/emoji/2E6.gif +0 -0
  270. data/closure-library/closure/goog/demos/emoji/2E7.gif +0 -0
  271. data/closure-library/closure/goog/demos/emoji/2E8.gif +0 -0
  272. data/closure-library/closure/goog/demos/emoji/2E9.gif +0 -0
  273. data/closure-library/closure/goog/demos/emoji/2EA.gif +0 -0
  274. data/closure-library/closure/goog/demos/emoji/2EB.gif +0 -0
  275. data/closure-library/closure/goog/demos/emoji/2EC.gif +0 -0
  276. data/closure-library/closure/goog/demos/emoji/2ED.gif +0 -0
  277. data/closure-library/closure/goog/demos/emoji/2EE.gif +0 -0
  278. data/closure-library/closure/goog/demos/emoji/2EF.gif +0 -0
  279. data/closure-library/closure/goog/demos/emoji/2F0.gif +0 -0
  280. data/closure-library/closure/goog/demos/emoji/2F1.gif +0 -0
  281. data/closure-library/closure/goog/demos/emoji/2F2.gif +0 -0
  282. data/closure-library/closure/goog/demos/emoji/2F3.gif +0 -0
  283. data/closure-library/closure/goog/demos/emoji/2F4.gif +0 -0
  284. data/closure-library/closure/goog/demos/emoji/2F5.gif +0 -0
  285. data/closure-library/closure/goog/demos/emoji/2F6.gif +0 -0
  286. data/closure-library/closure/goog/demos/emoji/2F7.gif +0 -0
  287. data/closure-library/closure/goog/demos/emoji/2F8.gif +0 -0
  288. data/closure-library/closure/goog/demos/emoji/2F9.gif +0 -0
  289. data/closure-library/closure/goog/demos/emoji/2FA.gif +0 -0
  290. data/closure-library/closure/goog/demos/emoji/2FB.gif +0 -0
  291. data/closure-library/closure/goog/demos/emoji/2FC.gif +0 -0
  292. data/closure-library/closure/goog/demos/emoji/2FD.gif +0 -0
  293. data/closure-library/closure/goog/demos/emoji/2FE.gif +0 -0
  294. data/closure-library/closure/goog/demos/emoji/2FF.gif +0 -0
  295. data/closure-library/closure/goog/demos/emoji/none.gif +0 -0
  296. data/closure-library/closure/goog/demos/emoji/sprite.png +0 -0
  297. data/closure-library/closure/goog/demos/emoji/sprite2.png +0 -0
  298. data/closure-library/closure/goog/demos/emoji/unknown.gif +0 -0
  299. data/closure-library/closure/goog/demos/event-propagation.html +192 -0
  300. data/closure-library/closure/goog/demos/events.html +99 -0
  301. data/closure-library/closure/goog/demos/eventtarget.html +70 -0
  302. data/closure-library/closure/goog/demos/filedrophandler.html +63 -0
  303. data/closure-library/closure/goog/demos/filteredmenu.html +118 -0
  304. data/closure-library/closure/goog/demos/focushandler.html +58 -0
  305. data/closure-library/closure/goog/demos/gauge.html +158 -0
  306. data/closure-library/closure/goog/demos/graphics/advancedcoordinates.html +141 -0
  307. data/closure-library/closure/goog/demos/graphics/advancedcoordinates2.html +130 -0
  308. data/closure-library/closure/goog/demos/graphics/basicelements.html +264 -0
  309. data/closure-library/closure/goog/demos/graphics/events.html +113 -0
  310. data/closure-library/closure/goog/demos/graphics/modifyelements.html +195 -0
  311. data/closure-library/closure/goog/demos/graphics/subpixel.html +80 -0
  312. data/closure-library/closure/goog/demos/graphics/tiger.html +105 -0
  313. data/closure-library/closure/goog/demos/graphics/tigerdata.js +2840 -0
  314. data/closure-library/closure/goog/demos/history1.html +132 -0
  315. data/closure-library/closure/goog/demos/history2.html +100 -0
  316. data/closure-library/closure/goog/demos/history3.html +106 -0
  317. data/closure-library/closure/goog/demos/history3js.html +36 -0
  318. data/closure-library/closure/goog/demos/history_blank.html +25 -0
  319. data/closure-library/closure/goog/demos/hovercard.html +177 -0
  320. data/closure-library/closure/goog/demos/hsvapalette.html +55 -0
  321. data/closure-library/closure/goog/demos/hsvpalette.html +56 -0
  322. data/closure-library/closure/goog/demos/html5history.html +87 -0
  323. data/closure-library/closure/goog/demos/imagelessbutton.html +221 -0
  324. data/closure-library/closure/goog/demos/imagelessmenubutton.html +285 -0
  325. data/closure-library/closure/goog/demos/imagelessroundedcorner.html +231 -0
  326. data/closure-library/closure/goog/demos/index.html +19 -0
  327. data/closure-library/closure/goog/demos/index_nav.html +253 -0
  328. data/closure-library/closure/goog/demos/index_splash.html +22 -0
  329. data/closure-library/closure/goog/demos/inline_block_quirks.html +125 -0
  330. data/closure-library/closure/goog/demos/inline_block_standards.html +126 -0
  331. data/closure-library/closure/goog/demos/inputdatepicker.html +60 -0
  332. data/closure-library/closure/goog/demos/inputhandler.html +72 -0
  333. data/closure-library/closure/goog/demos/jsonprettyprinter.html +80 -0
  334. data/closure-library/closure/goog/demos/keyboardshortcuts.html +112 -0
  335. data/closure-library/closure/goog/demos/keyhandler.html +127 -0
  336. data/closure-library/closure/goog/demos/labelinput.html +42 -0
  337. data/closure-library/closure/goog/demos/menu.html +220 -0
  338. data/closure-library/closure/goog/demos/menubutton.html +318 -0
  339. data/closure-library/closure/goog/demos/mousewheelhandler.html +109 -0
  340. data/closure-library/closure/goog/demos/offline.html +268 -0
  341. data/closure-library/closure/goog/demos/onlinehandler.html +77 -0
  342. data/closure-library/closure/goog/demos/palette.html +302 -0
  343. data/closure-library/closure/goog/demos/pastehandler.html +54 -0
  344. data/closure-library/closure/goog/demos/plaintextspellchecker.html +106 -0
  345. data/closure-library/closure/goog/demos/popup.html +200 -0
  346. data/closure-library/closure/goog/demos/popupcolorpicker.html +49 -0
  347. data/closure-library/closure/goog/demos/popupdatepicker.html +53 -0
  348. data/closure-library/closure/goog/demos/popupemojipicker.html +407 -0
  349. data/closure-library/closure/goog/demos/popupmenu.html +89 -0
  350. data/closure-library/closure/goog/demos/progressbar.html +97 -0
  351. data/closure-library/closure/goog/demos/prompt.html +92 -0
  352. data/closure-library/closure/goog/demos/quadtree.html +107 -0
  353. data/closure-library/closure/goog/demos/ratings.html +120 -0
  354. data/closure-library/closure/goog/demos/richtextspellchecker.html +92 -0
  355. data/closure-library/closure/goog/demos/roundedpanel.html +139 -0
  356. data/closure-library/closure/goog/demos/samplecomponent.html +75 -0
  357. data/closure-library/closure/goog/demos/samplecomponent.js +206 -0
  358. data/closure-library/closure/goog/demos/scrollfloater.html +117 -0
  359. data/closure-library/closure/goog/demos/select.html +324 -0
  360. data/closure-library/closure/goog/demos/selectionmenubutton.html +186 -0
  361. data/closure-library/closure/goog/demos/serverchart.html +122 -0
  362. data/closure-library/closure/goog/demos/silverlightclipboardbutton.html +71 -0
  363. data/closure-library/closure/goog/demos/slider.html +110 -0
  364. data/closure-library/closure/goog/demos/splitbehavior.html +164 -0
  365. data/closure-library/closure/goog/demos/splitpane.html +243 -0
  366. data/closure-library/closure/goog/demos/stopevent.html +171 -0
  367. data/closure-library/closure/goog/demos/submenus.html +130 -0
  368. data/closure-library/closure/goog/demos/submenus2.html +150 -0
  369. data/closure-library/closure/goog/demos/tabbar.html +289 -0
  370. data/closure-library/closure/goog/demos/tablesorter.html +116 -0
  371. data/closure-library/closure/goog/demos/tabpane.html +302 -0
  372. data/closure-library/closure/goog/demos/textarea.html +128 -0
  373. data/closure-library/closure/goog/demos/timers.html +291 -0
  374. data/closure-library/closure/goog/demos/toolbar.html +703 -0
  375. data/closure-library/closure/goog/demos/tooltip.html +91 -0
  376. data/closure-library/closure/goog/demos/tracer.html +92 -0
  377. data/closure-library/closure/goog/demos/tree/demo.html +126 -0
  378. data/closure-library/closure/goog/demos/tree/testdata.js +260 -0
  379. data/closure-library/closure/goog/demos/tweakui.html +121 -0
  380. data/closure-library/closure/goog/demos/twothumbslider.html +121 -0
  381. data/closure-library/closure/goog/demos/useragent.html +173 -0
  382. data/closure-library/closure/goog/demos/viewportsizemonitor.html +71 -0
  383. data/closure-library/closure/goog/demos/xpc/blank.html +7 -0
  384. data/closure-library/closure/goog/demos/xpc/index.html +89 -0
  385. data/closure-library/closure/goog/demos/xpc/inner.html +58 -0
  386. data/closure-library/closure/goog/demos/xpc/minimal/blank.html +7 -0
  387. data/closure-library/closure/goog/demos/xpc/minimal/index.html +105 -0
  388. data/closure-library/closure/goog/demos/xpc/minimal/inner.html +75 -0
  389. data/closure-library/closure/goog/demos/xpc/minimal/relay.html +7 -0
  390. data/closure-library/closure/goog/demos/xpc/relay.html +7 -0
  391. data/closure-library/closure/goog/demos/xpc/xpcdemo.js +304 -0
  392. data/closure-library/closure/goog/demos/zippy.html +127 -0
  393. data/closure-library/closure/goog/deps.js +672 -0
  394. data/closure-library/closure/goog/disposable/disposable.js +167 -0
  395. data/closure-library/closure/goog/disposable/disposable_test.html +202 -0
  396. data/closure-library/closure/goog/dom/a11y.js +438 -0
  397. data/closure-library/closure/goog/dom/a11y_test.html +86 -0
  398. data/closure-library/closure/goog/dom/abstractmultirange.js +77 -0
  399. data/closure-library/closure/goog/dom/abstractrange.js +514 -0
  400. data/closure-library/closure/goog/dom/abstractrange_test.html +73 -0
  401. data/closure-library/closure/goog/dom/annotate.js +352 -0
  402. data/closure-library/closure/goog/dom/annotate_test.html +187 -0
  403. data/closure-library/closure/goog/dom/browserfeature.js +50 -0
  404. data/closure-library/closure/goog/dom/browserrange/abstractrange.js +316 -0
  405. data/closure-library/closure/goog/dom/browserrange/browserrange.js +149 -0
  406. data/closure-library/closure/goog/dom/browserrange/browserrange_test.html +562 -0
  407. data/closure-library/closure/goog/dom/browserrange/geckorange.js +82 -0
  408. data/closure-library/closure/goog/dom/browserrange/ierange.js +970 -0
  409. data/closure-library/closure/goog/dom/browserrange/operarange.js +83 -0
  410. data/closure-library/closure/goog/dom/browserrange/w3crange.js +364 -0
  411. data/closure-library/closure/goog/dom/browserrange/webkitrange.js +112 -0
  412. data/closure-library/closure/goog/dom/classes.js +233 -0
  413. data/closure-library/closure/goog/dom/classes_test.html +228 -0
  414. data/closure-library/closure/goog/dom/controlrange.js +511 -0
  415. data/closure-library/closure/goog/dom/controlrange_test.html +246 -0
  416. data/closure-library/closure/goog/dom/dataset.js +90 -0
  417. data/closure-library/closure/goog/dom/dataset_test.html +104 -0
  418. data/closure-library/closure/goog/dom/dom.js +2424 -0
  419. data/closure-library/closure/goog/dom/dom_quirks_test.html +104 -0
  420. data/closure-library/closure/goog/dom/dom_test.html +103 -0
  421. data/closure-library/closure/goog/dom/dom_test.js +1129 -0
  422. data/closure-library/closure/goog/dom/fontsizemonitor.js +159 -0
  423. data/closure-library/closure/goog/dom/fontsizemonitor_test.html +283 -0
  424. data/closure-library/closure/goog/dom/forms.js +403 -0
  425. data/closure-library/closure/goog/dom/forms_test.html +483 -0
  426. data/closure-library/closure/goog/dom/iframe.js +128 -0
  427. data/closure-library/closure/goog/dom/iframe_test.html +87 -0
  428. data/closure-library/closure/goog/dom/iter.js +127 -0
  429. data/closure-library/closure/goog/dom/iter_test.html +97 -0
  430. data/closure-library/closure/goog/dom/multirange.js +519 -0
  431. data/closure-library/closure/goog/dom/multirange_test.html +67 -0
  432. data/closure-library/closure/goog/dom/nodeiterator.js +85 -0
  433. data/closure-library/closure/goog/dom/nodeiterator_test.html +49 -0
  434. data/closure-library/closure/goog/dom/nodeoffset.js +111 -0
  435. data/closure-library/closure/goog/dom/nodeoffset_test.html +88 -0
  436. data/closure-library/closure/goog/dom/pattern/abstractpattern.js +60 -0
  437. data/closure-library/closure/goog/dom/pattern/allchildren.js +73 -0
  438. data/closure-library/closure/goog/dom/pattern/callback/callback.js +82 -0
  439. data/closure-library/closure/goog/dom/pattern/callback/counter.js +72 -0
  440. data/closure-library/closure/goog/dom/pattern/callback/test.js +77 -0
  441. data/closure-library/closure/goog/dom/pattern/childmatches.js +152 -0
  442. data/closure-library/closure/goog/dom/pattern/endtag.js +53 -0
  443. data/closure-library/closure/goog/dom/pattern/fulltag.js +92 -0
  444. data/closure-library/closure/goog/dom/pattern/matcher.js +150 -0
  445. data/closure-library/closure/goog/dom/pattern/matcher_test.html +204 -0
  446. data/closure-library/closure/goog/dom/pattern/nodetype.js +57 -0
  447. data/closure-library/closure/goog/dom/pattern/pattern.js +93 -0
  448. data/closure-library/closure/goog/dom/pattern/pattern_test.html +614 -0
  449. data/closure-library/closure/goog/dom/pattern/repeat.js +188 -0
  450. data/closure-library/closure/goog/dom/pattern/sequence.js +139 -0
  451. data/closure-library/closure/goog/dom/pattern/starttag.js +53 -0
  452. data/closure-library/closure/goog/dom/pattern/tag.js +149 -0
  453. data/closure-library/closure/goog/dom/pattern/text.js +69 -0
  454. data/closure-library/closure/goog/dom/range.js +220 -0
  455. data/closure-library/closure/goog/dom/range_test.html +702 -0
  456. data/closure-library/closure/goog/dom/rangeendpoint.js +32 -0
  457. data/closure-library/closure/goog/dom/savedcaretrange.js +203 -0
  458. data/closure-library/closure/goog/dom/savedcaretrange_test.html +235 -0
  459. data/closure-library/closure/goog/dom/savedrange.js +74 -0
  460. data/closure-library/closure/goog/dom/savedrange_test.html +61 -0
  461. data/closure-library/closure/goog/dom/selection.js +470 -0
  462. data/closure-library/closure/goog/dom/selection_test.html +329 -0
  463. data/closure-library/closure/goog/dom/tagiterator.js +365 -0
  464. data/closure-library/closure/goog/dom/tagiterator_test.html +589 -0
  465. data/closure-library/closure/goog/dom/tagname.js +121 -0
  466. data/closure-library/closure/goog/dom/tagname_test.html +37 -0
  467. data/closure-library/closure/goog/dom/textrange.js +611 -0
  468. data/closure-library/closure/goog/dom/textrange_test.html +127 -0
  469. data/closure-library/closure/goog/dom/textrangeiterator.js +246 -0
  470. data/closure-library/closure/goog/dom/textrangeiterator_test.html +142 -0
  471. data/closure-library/closure/goog/dom/viewportsizemonitor.js +220 -0
  472. data/closure-library/closure/goog/dom/viewportsizemonitor_test.html +166 -0
  473. data/closure-library/closure/goog/dom/xml.js +187 -0
  474. data/closure-library/closure/goog/dom/xml_test.html +77 -0
  475. data/closure-library/closure/goog/editor/browserfeature.js +251 -0
  476. data/closure-library/closure/goog/editor/browserfeature_test.html +124 -0
  477. data/closure-library/closure/goog/editor/clicktoeditwrapper.js +438 -0
  478. data/closure-library/closure/goog/editor/clicktoeditwrapper_test.html +137 -0
  479. data/closure-library/closure/goog/editor/command.js +74 -0
  480. data/closure-library/closure/goog/editor/defines.js +34 -0
  481. data/closure-library/closure/goog/editor/field.js +2594 -0
  482. data/closure-library/closure/goog/editor/field_test.html +1000 -0
  483. data/closure-library/closure/goog/editor/focus.js +32 -0
  484. data/closure-library/closure/goog/editor/focus_test.html +66 -0
  485. data/closure-library/closure/goog/editor/icontent.js +296 -0
  486. data/closure-library/closure/goog/editor/icontent_test.html +209 -0
  487. data/closure-library/closure/goog/editor/link.js +279 -0
  488. data/closure-library/closure/goog/editor/link_test.html +234 -0
  489. data/closure-library/closure/goog/editor/node.js +435 -0
  490. data/closure-library/closure/goog/editor/node_test.html +590 -0
  491. data/closure-library/closure/goog/editor/plugin.js +444 -0
  492. data/closure-library/closure/goog/editor/plugin_test.html +187 -0
  493. data/closure-library/closure/goog/editor/plugins/abstractbubbleplugin.js +535 -0
  494. data/closure-library/closure/goog/editor/plugins/abstractbubbleplugin_test.html +227 -0
  495. data/closure-library/closure/goog/editor/plugins/abstractdialogplugin.js +336 -0
  496. data/closure-library/closure/goog/editor/plugins/abstractdialogplugin_test.html +399 -0
  497. data/closure-library/closure/goog/editor/plugins/abstracttabhandler.js +78 -0
  498. data/closure-library/closure/goog/editor/plugins/abstracttabhandler_test.html +91 -0
  499. data/closure-library/closure/goog/editor/plugins/basictextformatter.js +1740 -0
  500. data/closure-library/closure/goog/editor/plugins/basictextformatter_test.html +1171 -0
  501. data/closure-library/closure/goog/editor/plugins/blockquote.js +422 -0
  502. data/closure-library/closure/goog/editor/plugins/blockquote_test.html +149 -0
  503. data/closure-library/closure/goog/editor/plugins/emoticons.js +83 -0
  504. data/closure-library/closure/goog/editor/plugins/emoticons_test.html +67 -0
  505. data/closure-library/closure/goog/editor/plugins/enterhandler.js +730 -0
  506. data/closure-library/closure/goog/editor/plugins/enterhandler_test.html +739 -0
  507. data/closure-library/closure/goog/editor/plugins/headerformatter.js +95 -0
  508. data/closure-library/closure/goog/editor/plugins/headerformatter_test.html +100 -0
  509. data/closure-library/closure/goog/editor/plugins/linkbubble.js +458 -0
  510. data/closure-library/closure/goog/editor/plugins/linkbubble_test.html +309 -0
  511. data/closure-library/closure/goog/editor/plugins/linkdialogplugin.js +222 -0
  512. data/closure-library/closure/goog/editor/plugins/linkdialogplugin_test.html +370 -0
  513. data/closure-library/closure/goog/editor/plugins/listtabhandler.js +66 -0
  514. data/closure-library/closure/goog/editor/plugins/listtabhandler_test.html +177 -0
  515. data/closure-library/closure/goog/editor/plugins/loremipsum.js +186 -0
  516. data/closure-library/closure/goog/editor/plugins/loremipsum_test.html +169 -0
  517. data/closure-library/closure/goog/editor/plugins/removeformatting.js +772 -0
  518. data/closure-library/closure/goog/editor/plugins/removeformatting_test.html +920 -0
  519. data/closure-library/closure/goog/editor/plugins/spacestabhandler.js +93 -0
  520. data/closure-library/closure/goog/editor/plugins/spacestabhandler_test.html +186 -0
  521. data/closure-library/closure/goog/editor/plugins/tableeditor.js +496 -0
  522. data/closure-library/closure/goog/editor/plugins/tableeditor_test.html +299 -0
  523. data/closure-library/closure/goog/editor/plugins/tagonenterhandler.js +741 -0
  524. data/closure-library/closure/goog/editor/plugins/tagonenterhandler_test.html +481 -0
  525. data/closure-library/closure/goog/editor/plugins/undoredo.js +1014 -0
  526. data/closure-library/closure/goog/editor/plugins/undoredo_test.html +525 -0
  527. data/closure-library/closure/goog/editor/plugins/undoredomanager.js +337 -0
  528. data/closure-library/closure/goog/editor/plugins/undoredomanager_test.html +394 -0
  529. data/closure-library/closure/goog/editor/plugins/undoredostate.js +84 -0
  530. data/closure-library/closure/goog/editor/plugins/undoredostate_test.html +44 -0
  531. data/closure-library/closure/goog/editor/range.js +602 -0
  532. data/closure-library/closure/goog/editor/range_test.html +880 -0
  533. data/closure-library/closure/goog/editor/seamlessfield.js +720 -0
  534. data/closure-library/closure/goog/editor/seamlessfield_quirks_test.html +30 -0
  535. data/closure-library/closure/goog/editor/seamlessfield_test.html +33 -0
  536. data/closure-library/closure/goog/editor/seamlessfield_test.js +392 -0
  537. data/closure-library/closure/goog/editor/style.js +222 -0
  538. data/closure-library/closure/goog/editor/style_test.html +177 -0
  539. data/closure-library/closure/goog/editor/table.js +566 -0
  540. data/closure-library/closure/goog/editor/table_test.html +522 -0
  541. data/closure-library/closure/goog/events/actioneventwrapper.js +131 -0
  542. data/closure-library/closure/goog/events/actioneventwrapper_test.html +176 -0
  543. data/closure-library/closure/goog/events/actionhandler.js +189 -0
  544. data/closure-library/closure/goog/events/actionhandler_test.html +82 -0
  545. data/closure-library/closure/goog/events/browserevent.js +412 -0
  546. data/closure-library/closure/goog/events/browserevent_test.html +145 -0
  547. data/closure-library/closure/goog/events/browserfeature.js +43 -0
  548. data/closure-library/closure/goog/events/event.js +123 -0
  549. data/closure-library/closure/goog/events/event_test.html +70 -0
  550. data/closure-library/closure/goog/events/eventhandler.js +348 -0
  551. data/closure-library/closure/goog/events/eventhandler_test.html +230 -0
  552. data/closure-library/closure/goog/events/events.js +1101 -0
  553. data/closure-library/closure/goog/events/events_test.html +362 -0
  554. data/closure-library/closure/goog/events/eventtarget.js +197 -0
  555. data/closure-library/closure/goog/events/eventtarget_test.html +423 -0
  556. data/closure-library/closure/goog/events/eventtype.js +107 -0
  557. data/closure-library/closure/goog/events/eventwrapper.js +67 -0
  558. data/closure-library/closure/goog/events/filedrophandler.js +224 -0
  559. data/closure-library/closure/goog/events/filedrophandler_test.html +258 -0
  560. data/closure-library/closure/goog/events/focushandler.js +111 -0
  561. data/closure-library/closure/goog/events/imehandler.js +365 -0
  562. data/closure-library/closure/goog/events/imehandler_test.html +271 -0
  563. data/closure-library/closure/goog/events/inputhandler.js +218 -0
  564. data/closure-library/closure/goog/events/keycodes.js +314 -0
  565. data/closure-library/closure/goog/events/keycodes_test.html +72 -0
  566. data/closure-library/closure/goog/events/keyhandler.js +522 -0
  567. data/closure-library/closure/goog/events/keyhandler_test.html +621 -0
  568. data/closure-library/closure/goog/events/keynames.js +124 -0
  569. data/closure-library/closure/goog/events/listener.js +160 -0
  570. data/closure-library/closure/goog/events/mousewheelhandler.js +280 -0
  571. data/closure-library/closure/goog/events/mousewheelhandler_test.html +331 -0
  572. data/closure-library/closure/goog/events/onlinehandler.js +176 -0
  573. data/closure-library/closure/goog/events/onlinelistener_test.html +214 -0
  574. data/closure-library/closure/goog/events/pastehandler.js +444 -0
  575. data/closure-library/closure/goog/events/pastehandler_test.html +354 -0
  576. data/closure-library/closure/goog/events/pools.js +342 -0
  577. data/closure-library/closure/goog/format/emailaddress.js +329 -0
  578. data/closure-library/closure/goog/format/emailaddress_test.html +179 -0
  579. data/closure-library/closure/goog/format/format.js +451 -0
  580. data/closure-library/closure/goog/format/format_test.html +257 -0
  581. data/closure-library/closure/goog/format/htmlprettyprinter.js +406 -0
  582. data/closure-library/closure/goog/format/htmlprettyprinter_test.html +205 -0
  583. data/closure-library/closure/goog/format/jsonprettyprinter.js +405 -0
  584. data/closure-library/closure/goog/format/jsonprettyprinter_test.html +111 -0
  585. data/closure-library/closure/goog/fs/entry.js +406 -0
  586. data/closure-library/closure/goog/fs/error.js +103 -0
  587. data/closure-library/closure/goog/fs/filesaver.js +214 -0
  588. data/closure-library/closure/goog/fs/filesystem.js +59 -0
  589. data/closure-library/closure/goog/fs/filewriter.js +106 -0
  590. data/closure-library/closure/goog/fs/fs.js +183 -0
  591. data/closure-library/closure/goog/fs/fs_test.html +270 -0
  592. data/closure-library/closure/goog/functions/functions.js +219 -0
  593. data/closure-library/closure/goog/functions/functions_test.html +198 -0
  594. data/closure-library/closure/goog/fx/abstractdragdrop.js +1451 -0
  595. data/closure-library/closure/goog/fx/abstractdragdrop_test.html +430 -0
  596. data/closure-library/closure/goog/fx/animation.js +621 -0
  597. data/closure-library/closure/goog/fx/animationqueue.js +348 -0
  598. data/closure-library/closure/goog/fx/cssspriteanimation.js +112 -0
  599. data/closure-library/closure/goog/fx/cssspriteanimation_test.html +125 -0
  600. data/closure-library/closure/goog/fx/dom.js +610 -0
  601. data/closure-library/closure/goog/fx/dragdrop.js +49 -0
  602. data/closure-library/closure/goog/fx/dragdropgroup.js +107 -0
  603. data/closure-library/closure/goog/fx/dragdropgroup_test.html +234 -0
  604. data/closure-library/closure/goog/fx/dragger.js +731 -0
  605. data/closure-library/closure/goog/fx/dragger_test.html +415 -0
  606. data/closure-library/closure/goog/fx/draglistgroup.js +1159 -0
  607. data/closure-library/closure/goog/fx/draglistgroup_test.html +231 -0
  608. data/closure-library/closure/goog/fx/dragscrollsupport.js +274 -0
  609. data/closure-library/closure/goog/fx/dragscrollsupport_test.html +253 -0
  610. data/closure-library/closure/goog/fx/easing.js +50 -0
  611. data/closure-library/closure/goog/fx/fx.js +30 -0
  612. data/closure-library/closure/goog/fx/fx_test.html +157 -0
  613. data/closure-library/closure/goog/gears/basestore.js +523 -0
  614. data/closure-library/closure/goog/gears/basestore_test.html +247 -0
  615. data/closure-library/closure/goog/gears/database.js +935 -0
  616. data/closure-library/closure/goog/gears/database_test.html +699 -0
  617. data/closure-library/closure/goog/gears/fakeworkerpool.js +252 -0
  618. data/closure-library/closure/goog/gears/fakeworkerpool_test.html +188 -0
  619. data/closure-library/closure/goog/gears/gears.js +228 -0
  620. data/closure-library/closure/goog/gears/gears_test.html +78 -0
  621. data/closure-library/closure/goog/gears/httprequest.js +77 -0
  622. data/closure-library/closure/goog/gears/loggerclient.js +131 -0
  623. data/closure-library/closure/goog/gears/loggerclient_test.html +171 -0
  624. data/closure-library/closure/goog/gears/loggerserver.js +158 -0
  625. data/closure-library/closure/goog/gears/loggerserver_test.html +118 -0
  626. data/closure-library/closure/goog/gears/logstore.js +479 -0
  627. data/closure-library/closure/goog/gears/logstore_test.html +600 -0
  628. data/closure-library/closure/goog/gears/managedresourcestore.js +553 -0
  629. data/closure-library/closure/goog/gears/managedresourcestore_test.html +453 -0
  630. data/closure-library/closure/goog/gears/multipartformdata.js +203 -0
  631. data/closure-library/closure/goog/gears/multipartformdata_test.html +220 -0
  632. data/closure-library/closure/goog/gears/statustype.js +37 -0
  633. data/closure-library/closure/goog/gears/urlcapture.js +370 -0
  634. data/closure-library/closure/goog/gears/urlcapture_test.html +392 -0
  635. data/closure-library/closure/goog/gears/worker.js +201 -0
  636. data/closure-library/closure/goog/gears/workerchannel.js +205 -0
  637. data/closure-library/closure/goog/gears/workerchannel_test.html +207 -0
  638. data/closure-library/closure/goog/gears/workerpool.js +241 -0
  639. data/closure-library/closure/goog/gears/workerpool_test.html +203 -0
  640. data/closure-library/closure/goog/graphics/abstractgraphics.js +439 -0
  641. data/closure-library/closure/goog/graphics/affinetransform.js +497 -0
  642. data/closure-library/closure/goog/graphics/affinetransform_test.html +316 -0
  643. data/closure-library/closure/goog/graphics/canvaselement.js +776 -0
  644. data/closure-library/closure/goog/graphics/canvasgraphics.js +632 -0
  645. data/closure-library/closure/goog/graphics/element.js +145 -0
  646. data/closure-library/closure/goog/graphics/ellipseelement.js +59 -0
  647. data/closure-library/closure/goog/graphics/ext/coordinates.js +158 -0
  648. data/closure-library/closure/goog/graphics/ext/coordinates_test.html +74 -0
  649. data/closure-library/closure/goog/graphics/ext/element.js +970 -0
  650. data/closure-library/closure/goog/graphics/ext/element_test.html +144 -0
  651. data/closure-library/closure/goog/graphics/ext/ellipse.js +58 -0
  652. data/closure-library/closure/goog/graphics/ext/ext.js +29 -0
  653. data/closure-library/closure/goog/graphics/ext/graphics.js +209 -0
  654. data/closure-library/closure/goog/graphics/ext/group.js +213 -0
  655. data/closure-library/closure/goog/graphics/ext/image.js +62 -0
  656. data/closure-library/closure/goog/graphics/ext/path.js +140 -0
  657. data/closure-library/closure/goog/graphics/ext/path_test.html +46 -0
  658. data/closure-library/closure/goog/graphics/ext/rectangle.js +53 -0
  659. data/closure-library/closure/goog/graphics/ext/shape.js +144 -0
  660. data/closure-library/closure/goog/graphics/ext/strokeandfillelement.js +69 -0
  661. data/closure-library/closure/goog/graphics/fill.js +29 -0
  662. data/closure-library/closure/goog/graphics/font.js +59 -0
  663. data/closure-library/closure/goog/graphics/graphics.js +124 -0
  664. data/closure-library/closure/goog/graphics/groupelement.js +54 -0
  665. data/closure-library/closure/goog/graphics/imageelement.js +67 -0
  666. data/closure-library/closure/goog/graphics/lineargradient.js +131 -0
  667. data/closure-library/closure/goog/graphics/path.js +508 -0
  668. data/closure-library/closure/goog/graphics/path_test.html +359 -0
  669. data/closure-library/closure/goog/graphics/pathelement.js +50 -0
  670. data/closure-library/closure/goog/graphics/paths.js +86 -0
  671. data/closure-library/closure/goog/graphics/paths_test.html +97 -0
  672. data/closure-library/closure/goog/graphics/rectelement.js +59 -0
  673. data/closure-library/closure/goog/graphics/solidfill.js +70 -0
  674. data/closure-library/closure/goog/graphics/stroke.js +63 -0
  675. data/closure-library/closure/goog/graphics/strokeandfillelement.js +110 -0
  676. data/closure-library/closure/goog/graphics/svgelement.js +262 -0
  677. data/closure-library/closure/goog/graphics/svggraphics.js +813 -0
  678. data/closure-library/closure/goog/graphics/textelement.js +51 -0
  679. data/closure-library/closure/goog/graphics/vmlelement.js +380 -0
  680. data/closure-library/closure/goog/graphics/vmlgraphics.js +863 -0
  681. data/closure-library/closure/goog/history/event.js +54 -0
  682. data/closure-library/closure/goog/history/eventtype.js +30 -0
  683. data/closure-library/closure/goog/history/history.js +979 -0
  684. data/closure-library/closure/goog/history/html5history.js +303 -0
  685. data/closure-library/closure/goog/history/html5history_test.html +163 -0
  686. data/closure-library/closure/goog/i18n/bidi.js +772 -0
  687. data/closure-library/closure/goog/i18n/bidi_test.html +414 -0
  688. data/closure-library/closure/goog/i18n/bidiformatter.js +488 -0
  689. data/closure-library/closure/goog/i18n/bidiformatter_test.html +343 -0
  690. data/closure-library/closure/goog/i18n/charlistdecompressor.js +157 -0
  691. data/closure-library/closure/goog/i18n/charlistdecompressor_test.html +65 -0
  692. data/closure-library/closure/goog/i18n/charpickerdata.js +3185 -0
  693. data/closure-library/closure/goog/i18n/currency.js +385 -0
  694. data/closure-library/closure/goog/i18n/currency_test.html +202 -0
  695. data/closure-library/closure/goog/i18n/currencycodemap.js +210 -0
  696. data/closure-library/closure/goog/i18n/datetimeformat.js +636 -0
  697. data/closure-library/closure/goog/i18n/datetimeformat_test.html +436 -0
  698. data/closure-library/closure/goog/i18n/datetimeparse.js +1111 -0
  699. data/closure-library/closure/goog/i18n/datetimeparse_test.html +796 -0
  700. data/closure-library/closure/goog/i18n/datetimepatterns.js +1586 -0
  701. data/closure-library/closure/goog/i18n/datetimepatternsext.js +7386 -0
  702. data/closure-library/closure/goog/i18n/datetimesymbols.js +3350 -0
  703. data/closure-library/closure/goog/i18n/datetimesymbolsext.js +12938 -0
  704. data/closure-library/closure/goog/i18n/graphemebreak.js +181 -0
  705. data/closure-library/closure/goog/i18n/graphemebreak_test.html +72 -0
  706. data/closure-library/closure/goog/i18n/messageformat.js +553 -0
  707. data/closure-library/closure/goog/i18n/messageformat_test.html +323 -0
  708. data/closure-library/closure/goog/i18n/mime.js +100 -0
  709. data/closure-library/closure/goog/i18n/mime_test.html +51 -0
  710. data/closure-library/closure/goog/i18n/numberformat.js +763 -0
  711. data/closure-library/closure/goog/i18n/numberformat_test.html +605 -0
  712. data/closure-library/closure/goog/i18n/numberformatsymbols.js +10358 -0
  713. data/closure-library/closure/goog/i18n/pluralrules.js +695 -0
  714. data/closure-library/closure/goog/i18n/timezone.js +341 -0
  715. data/closure-library/closure/goog/i18n/timezone_test.html +163 -0
  716. data/closure-library/closure/goog/i18n/uchar.js +1160 -0
  717. data/closure-library/closure/goog/i18n/uchar_test.html +72 -0
  718. data/closure-library/closure/goog/images/blank.gif +0 -0
  719. data/closure-library/closure/goog/images/bubble_close.jpg +0 -0
  720. data/closure-library/closure/goog/images/bubble_left.gif +0 -0
  721. data/closure-library/closure/goog/images/bubble_right.gif +0 -0
  722. data/closure-library/closure/goog/images/button-bg.gif +0 -0
  723. data/closure-library/closure/goog/images/check-outline.gif +0 -0
  724. data/closure-library/closure/goog/images/check-sprite.gif +0 -0
  725. data/closure-library/closure/goog/images/check.gif +0 -0
  726. data/closure-library/closure/goog/images/close_box.gif +0 -0
  727. data/closure-library/closure/goog/images/color-swatch-tick.gif +0 -0
  728. data/closure-library/closure/goog/images/dialog_close_box.gif +0 -0
  729. data/closure-library/closure/goog/images/dimension-highlighted.png +0 -0
  730. data/closure-library/closure/goog/images/dimension-unhighlighted.png +0 -0
  731. data/closure-library/closure/goog/images/dropdn.gif +0 -0
  732. data/closure-library/closure/goog/images/dropdn_disabled.gif +0 -0
  733. data/closure-library/closure/goog/images/dropdown.gif +0 -0
  734. data/closure-library/closure/goog/images/gears_bluedot.gif +0 -0
  735. data/closure-library/closure/goog/images/gears_offline.gif +0 -0
  736. data/closure-library/closure/goog/images/gears_online.gif +0 -0
  737. data/closure-library/closure/goog/images/gears_paused.gif +0 -0
  738. data/closure-library/closure/goog/images/gears_syncing.gif +0 -0
  739. data/closure-library/closure/goog/images/hsv-sprite-sm.gif +0 -0
  740. data/closure-library/closure/goog/images/hsv-sprite-sm.png +0 -0
  741. data/closure-library/closure/goog/images/hsv-sprite.gif +0 -0
  742. data/closure-library/closure/goog/images/hsv-sprite.png +0 -0
  743. data/closure-library/closure/goog/images/hsva-sprite-sm.gif +0 -0
  744. data/closure-library/closure/goog/images/hsva-sprite-sm.png +0 -0
  745. data/closure-library/closure/goog/images/hsva-sprite.gif +0 -0
  746. data/closure-library/closure/goog/images/hsva-sprite.png +0 -0
  747. data/closure-library/closure/goog/images/left_anchor_bubble_bot.gif +0 -0
  748. data/closure-library/closure/goog/images/left_anchor_bubble_top.gif +0 -0
  749. data/closure-library/closure/goog/images/menu-arrows.gif +0 -0
  750. data/closure-library/closure/goog/images/minus.png +0 -0
  751. data/closure-library/closure/goog/images/no_anchor_bubble_bot.gif +0 -0
  752. data/closure-library/closure/goog/images/no_anchor_bubble_top.gif +0 -0
  753. data/closure-library/closure/goog/images/offlineicons.png +0 -0
  754. data/closure-library/closure/goog/images/plus.png +0 -0
  755. data/closure-library/closure/goog/images/ratingstars.gif +0 -0
  756. data/closure-library/closure/goog/images/right_anchor_bubble_bot.gif +0 -0
  757. data/closure-library/closure/goog/images/right_anchor_bubble_top.gif +0 -0
  758. data/closure-library/closure/goog/images/toolbar-bg.png +0 -0
  759. data/closure-library/closure/goog/images/toolbar-separator.gif +0 -0
  760. data/closure-library/closure/goog/images/toolbar_icons.gif +0 -0
  761. data/closure-library/closure/goog/images/tree/I.png +0 -0
  762. data/closure-library/closure/goog/images/tree/cleardot.gif +0 -0
  763. data/closure-library/closure/goog/images/tree/tree.gif +0 -0
  764. data/closure-library/closure/goog/images/tree/tree.png +0 -0
  765. data/closure-library/closure/goog/images/ui_controls.jpg +0 -0
  766. data/closure-library/closure/goog/iter/iter.js +627 -0
  767. data/closure-library/closure/goog/iter/iter_test.html +443 -0
  768. data/closure-library/closure/goog/json/json.js +302 -0
  769. data/closure-library/closure/goog/json/json_test.html +501 -0
  770. data/closure-library/closure/goog/locale/countries.js +288 -0
  771. data/closure-library/closure/goog/locale/countrylanguagenames_test.html +233 -0
  772. data/closure-library/closure/goog/locale/defaultlocalenameconstants.js +847 -0
  773. data/closure-library/closure/goog/locale/genericfontnames.js +73 -0
  774. data/closure-library/closure/goog/locale/genericfontnames_test.html +97 -0
  775. data/closure-library/closure/goog/locale/genericfontnamesdata.js +328 -0
  776. data/closure-library/closure/goog/locale/locale.js +397 -0
  777. data/closure-library/closure/goog/locale/nativenameconstants.js +1354 -0
  778. data/closure-library/closure/goog/locale/scriptToLanguages.js +482 -0
  779. data/closure-library/closure/goog/locale/timezonedetection.js +117 -0
  780. data/closure-library/closure/goog/locale/timezonedetection_test.html +130 -0
  781. data/closure-library/closure/goog/locale/timezonefingerprint.js +250 -0
  782. data/closure-library/closure/goog/locale/timezonelist.js +129 -0
  783. data/closure-library/closure/goog/locale/timezonelist_test.html +165 -0
  784. data/closure-library/closure/goog/math/bezier.js +244 -0
  785. data/closure-library/closure/goog/math/bezier_test.html +70 -0
  786. data/closure-library/closure/goog/math/box.js +236 -0
  787. data/closure-library/closure/goog/math/box_test.html +139 -0
  788. data/closure-library/closure/goog/math/coordinate.js +136 -0
  789. data/closure-library/closure/goog/math/coordinate3.js +168 -0
  790. data/closure-library/closure/goog/math/coordinate3_test.html +208 -0
  791. data/closure-library/closure/goog/math/coordinate_test.html +92 -0
  792. data/closure-library/closure/goog/math/integer.js +736 -0
  793. data/closure-library/closure/goog/math/integer_test.html +1653 -0
  794. data/closure-library/closure/goog/math/line.js +177 -0
  795. data/closure-library/closure/goog/math/line_test.html +62 -0
  796. data/closure-library/closure/goog/math/long.js +801 -0
  797. data/closure-library/closure/goog/math/long_test.html +1571 -0
  798. data/closure-library/closure/goog/math/math.js +355 -0
  799. data/closure-library/closure/goog/math/math_test.html +254 -0
  800. data/closure-library/closure/goog/math/matrix.js +669 -0
  801. data/closure-library/closure/goog/math/matrix_test.html +427 -0
  802. data/closure-library/closure/goog/math/range.js +146 -0
  803. data/closure-library/closure/goog/math/range_test.html +103 -0
  804. data/closure-library/closure/goog/math/rangeset.js +368 -0
  805. data/closure-library/closure/goog/math/rangeset_test.html +619 -0
  806. data/closure-library/closure/goog/math/rect.js +340 -0
  807. data/closure-library/closure/goog/math/rect_test.html +315 -0
  808. data/closure-library/closure/goog/math/size.js +201 -0
  809. data/closure-library/closure/goog/math/size_test.html +174 -0
  810. data/closure-library/closure/goog/math/vec2.js +255 -0
  811. data/closure-library/closure/goog/math/vec2_test.html +203 -0
  812. data/closure-library/closure/goog/math/vec3.js +327 -0
  813. data/closure-library/closure/goog/math/vec3_test.html +231 -0
  814. data/closure-library/closure/goog/memoize/memoize.js +98 -0
  815. data/closure-library/closure/goog/memoize/memoize_test.html +157 -0
  816. data/closure-library/closure/goog/messaging/abstractchannel.js +209 -0
  817. data/closure-library/closure/goog/messaging/abstractchannel_test.html +90 -0
  818. data/closure-library/closure/goog/messaging/bufferedchannel.js +277 -0
  819. data/closure-library/closure/goog/messaging/bufferedchannel_test.html +205 -0
  820. data/closure-library/closure/goog/messaging/deferredchannel.js +79 -0
  821. data/closure-library/closure/goog/messaging/deferredchannel_test.html +107 -0
  822. data/closure-library/closure/goog/messaging/loggerclient.js +131 -0
  823. data/closure-library/closure/goog/messaging/loggerclient_test.html +102 -0
  824. data/closure-library/closure/goog/messaging/loggerserver.js +94 -0
  825. data/closure-library/closure/goog/messaging/loggerserver_test.html +101 -0
  826. data/closure-library/closure/goog/messaging/messagechannel.js +115 -0
  827. data/closure-library/closure/goog/messaging/messaging.js +34 -0
  828. data/closure-library/closure/goog/messaging/messaging_test.html +42 -0
  829. data/closure-library/closure/goog/messaging/multichannel.js +303 -0
  830. data/closure-library/closure/goog/messaging/multichannel_test.html +122 -0
  831. data/closure-library/closure/goog/messaging/portchannel.js +341 -0
  832. data/closure-library/closure/goog/messaging/portchannel_test.html +359 -0
  833. data/closure-library/closure/goog/messaging/testdata/portchannel_worker.js +37 -0
  834. data/closure-library/closure/goog/module/abstractmoduleloader.js +46 -0
  835. data/closure-library/closure/goog/module/basemodule.js +45 -0
  836. data/closure-library/closure/goog/module/basemoduleloader.js +210 -0
  837. data/closure-library/closure/goog/module/loader.js +269 -0
  838. data/closure-library/closure/goog/module/module.js +166 -0
  839. data/closure-library/closure/goog/module/moduleinfo.js +336 -0
  840. data/closure-library/closure/goog/module/moduleinfo_test.html +109 -0
  841. data/closure-library/closure/goog/module/moduleloadcallback.js +84 -0
  842. data/closure-library/closure/goog/module/moduleloadcallback_test.html +57 -0
  843. data/closure-library/closure/goog/module/moduleloader.js +250 -0
  844. data/closure-library/closure/goog/module/moduleloader_test.html +244 -0
  845. data/closure-library/closure/goog/module/modulemanager.js +1008 -0
  846. data/closure-library/closure/goog/module/modulemanager_test.html +1240 -0
  847. data/closure-library/closure/goog/module/testdata/modA_1.js +22 -0
  848. data/closure-library/closure/goog/module/testdata/modA_2.js +24 -0
  849. data/closure-library/closure/goog/module/testdata/modB_1.js +24 -0
  850. data/closure-library/closure/goog/net/browserchannel.js +2441 -0
  851. data/closure-library/closure/goog/net/browserchannel_test.html +1176 -0
  852. data/closure-library/closure/goog/net/browsertestchannel.js +552 -0
  853. data/closure-library/closure/goog/net/bulkloader.js +174 -0
  854. data/closure-library/closure/goog/net/bulkloader_test.html +232 -0
  855. data/closure-library/closure/goog/net/bulkloaderhelper.js +129 -0
  856. data/closure-library/closure/goog/net/channeldebug.js +288 -0
  857. data/closure-library/closure/goog/net/channelrequest.js +1125 -0
  858. data/closure-library/closure/goog/net/channelrequest_test.html +158 -0
  859. data/closure-library/closure/goog/net/cookies.js +401 -0
  860. data/closure-library/closure/goog/net/cookies_test.html +255 -0
  861. data/closure-library/closure/goog/net/crossdomainrpc.js +848 -0
  862. data/closure-library/closure/goog/net/crossdomainrpc_test.gif +0 -0
  863. data/closure-library/closure/goog/net/crossdomainrpc_test.html +120 -0
  864. data/closure-library/closure/goog/net/crossdomainrpc_test_response.html +59 -0
  865. data/closure-library/closure/goog/net/errorcode.js +130 -0
  866. data/closure-library/closure/goog/net/eventtype.js +37 -0
  867. data/closure-library/closure/goog/net/iframe_xhr_test.html +142 -0
  868. data/closure-library/closure/goog/net/iframe_xhr_test_response.html +17 -0
  869. data/closure-library/closure/goog/net/iframeio.js +1342 -0
  870. data/closure-library/closure/goog/net/iframeio_different_base_test.data +2 -0
  871. data/closure-library/closure/goog/net/iframeio_different_base_test.html +42 -0
  872. data/closure-library/closure/goog/net/iframeio_test.html +368 -0
  873. data/closure-library/closure/goog/net/iframeloadmonitor.js +199 -0
  874. data/closure-library/closure/goog/net/iframeloadmonitor_test.html +113 -0
  875. data/closure-library/closure/goog/net/iframeloadmonitor_test_frame.html +12 -0
  876. data/closure-library/closure/goog/net/iframeloadmonitor_test_frame2.html +12 -0
  877. data/closure-library/closure/goog/net/iframeloadmonitor_test_frame3.html +12 -0
  878. data/closure-library/closure/goog/net/imageloader.js +237 -0
  879. data/closure-library/closure/goog/net/imageloader_test.html +200 -0
  880. data/closure-library/closure/goog/net/imageloader_testimg1.gif +0 -0
  881. data/closure-library/closure/goog/net/imageloader_testimg2.gif +0 -0
  882. data/closure-library/closure/goog/net/imageloader_testimg3.gif +0 -0
  883. data/closure-library/closure/goog/net/jsonp.js +379 -0
  884. data/closure-library/closure/goog/net/jsonp_test.html +328 -0
  885. data/closure-library/closure/goog/net/mockiframeio.js +318 -0
  886. data/closure-library/closure/goog/net/mockxhrlite.js +34 -0
  887. data/closure-library/closure/goog/net/mockxhrlite_test.html +109 -0
  888. data/closure-library/closure/goog/net/multiiframeloadmonitor.js +116 -0
  889. data/closure-library/closure/goog/net/multiiframeloadmonitor_test.html +172 -0
  890. data/closure-library/closure/goog/net/networktester.js +383 -0
  891. data/closure-library/closure/goog/net/networktester_test.html +227 -0
  892. data/closure-library/closure/goog/net/tmpnetwork.js +168 -0
  893. data/closure-library/closure/goog/net/wrapperxmlhttpfactory.js +68 -0
  894. data/closure-library/closure/goog/net/xhrio.js +1093 -0
  895. data/closure-library/closure/goog/net/xhrio_test.html +603 -0
  896. data/closure-library/closure/goog/net/xhriopool.js +87 -0
  897. data/closure-library/closure/goog/net/xhrlite.js +119 -0
  898. data/closure-library/closure/goog/net/xhrlite_test.html +156 -0
  899. data/closure-library/closure/goog/net/xhrlitepool.js +37 -0
  900. data/closure-library/closure/goog/net/xhrmanager.js +763 -0
  901. data/closure-library/closure/goog/net/xhrmonitor.js +254 -0
  902. data/closure-library/closure/goog/net/xhrmonitor_test.html +199 -0
  903. data/closure-library/closure/goog/net/xmlhttp.js +215 -0
  904. data/closure-library/closure/goog/net/xmlhttpfactory.js +64 -0
  905. data/closure-library/closure/goog/net/xpc/crosspagechannel.js +624 -0
  906. data/closure-library/closure/goog/net/xpc/crosspagechannel_test.html +422 -0
  907. data/closure-library/closure/goog/net/xpc/frameelementmethodtransport.js +251 -0
  908. data/closure-library/closure/goog/net/xpc/iframepollingtransport.js +822 -0
  909. data/closure-library/closure/goog/net/xpc/iframerelaytransport.js +288 -0
  910. data/closure-library/closure/goog/net/xpc/nativemessagingtransport.js +280 -0
  911. data/closure-library/closure/goog/net/xpc/nativemessagingtransport_test.html +164 -0
  912. data/closure-library/closure/goog/net/xpc/nixtransport.js +454 -0
  913. data/closure-library/closure/goog/net/xpc/relay.js +72 -0
  914. data/closure-library/closure/goog/net/xpc/testdata/inner_peer.html +106 -0
  915. data/closure-library/closure/goog/net/xpc/transport.js +104 -0
  916. data/closure-library/closure/goog/net/xpc/xpc.js +238 -0
  917. data/closure-library/closure/goog/object/object.js +553 -0
  918. data/closure-library/closure/goog/object/object_test.html +376 -0
  919. data/closure-library/closure/goog/positioning/absoluteposition.js +73 -0
  920. data/closure-library/closure/goog/positioning/abstractposition.js +47 -0
  921. data/closure-library/closure/goog/positioning/anchoredposition.js +78 -0
  922. data/closure-library/closure/goog/positioning/anchoredviewportposition.js +126 -0
  923. data/closure-library/closure/goog/positioning/anchoredviewportposition_test.html +117 -0
  924. data/closure-library/closure/goog/positioning/anchoredviewportposition_test_iframe.html +35 -0
  925. data/closure-library/closure/goog/positioning/clientposition.js +75 -0
  926. data/closure-library/closure/goog/positioning/menuanchoredposition.js +97 -0
  927. data/closure-library/closure/goog/positioning/positioning.js +476 -0
  928. data/closure-library/closure/goog/positioning/positioning_test.html +877 -0
  929. data/closure-library/closure/goog/positioning/positioning_test_iframe1.html +16 -0
  930. data/closure-library/closure/goog/positioning/positioning_test_iframe2.html +13 -0
  931. data/closure-library/closure/goog/positioning/positioning_test_quirk.html +9 -0
  932. data/closure-library/closure/goog/positioning/positioning_test_standard.html +13 -0
  933. data/closure-library/closure/goog/positioning/viewportclientposition.js +102 -0
  934. data/closure-library/closure/goog/positioning/viewportclientposition_test.html +172 -0
  935. data/closure-library/closure/goog/positioning/viewportposition.js +63 -0
  936. data/closure-library/closure/goog/proto/proto.js +43 -0
  937. data/closure-library/closure/goog/proto/serializer.js +68 -0
  938. data/closure-library/closure/goog/proto/serializer_test.html +43 -0
  939. data/closure-library/closure/goog/proto2/descriptor.js +198 -0
  940. data/closure-library/closure/goog/proto2/descriptor_test.html +60 -0
  941. data/closure-library/closure/goog/proto2/fielddescriptor.js +288 -0
  942. data/closure-library/closure/goog/proto2/fielddescriptor_test.html +124 -0
  943. data/closure-library/closure/goog/proto2/lazydeserializer.js +69 -0
  944. data/closure-library/closure/goog/proto2/message.js +726 -0
  945. data/closure-library/closure/goog/proto2/message_test.html +356 -0
  946. data/closure-library/closure/goog/proto2/objectserializer.js +159 -0
  947. data/closure-library/closure/goog/proto2/objectserializer_test.html +423 -0
  948. data/closure-library/closure/goog/proto2/package_test.pb.js +164 -0
  949. data/closure-library/closure/goog/proto2/pbliteserializer.js +150 -0
  950. data/closure-library/closure/goog/proto2/pbliteserializer_test.html +267 -0
  951. data/closure-library/closure/goog/proto2/proto_test.html +693 -0
  952. data/closure-library/closure/goog/proto2/serializer.js +148 -0
  953. data/closure-library/closure/goog/proto2/test.pb.js +2820 -0
  954. data/closure-library/closure/goog/proto2/util.js +54 -0
  955. data/closure-library/closure/goog/pubsub/pubsub.js +326 -0
  956. data/closure-library/closure/goog/pubsub/pubsub_test.html +635 -0
  957. data/closure-library/closure/goog/reflect/reflect.js +50 -0
  958. data/closure-library/closure/goog/spell/spellcheck.js +474 -0
  959. data/closure-library/closure/goog/spell/spellcheck_test.html +112 -0
  960. data/closure-library/closure/goog/string/path.js +100 -0
  961. data/closure-library/closure/goog/string/path_test.html +59 -0
  962. data/closure-library/closure/goog/string/string.js +1207 -0
  963. data/closure-library/closure/goog/string/string_test.html +877 -0
  964. data/closure-library/closure/goog/string/stringbuffer.js +167 -0
  965. data/closure-library/closure/goog/string/stringbuffer_test.html +101 -0
  966. data/closure-library/closure/goog/string/stringformat.js +247 -0
  967. data/closure-library/closure/goog/string/stringformat_test.html +211 -0
  968. data/closure-library/closure/goog/structs/avltree.js +769 -0
  969. data/closure-library/closure/goog/structs/avltree_test.html +241 -0
  970. data/closure-library/closure/goog/structs/circularbuffer.js +219 -0
  971. data/closure-library/closure/goog/structs/circularbuffer_test.html +105 -0
  972. data/closure-library/closure/goog/structs/heap.js +332 -0
  973. data/closure-library/closure/goog/structs/heap_test.html +220 -0
  974. data/closure-library/closure/goog/structs/inversionmap.js +159 -0
  975. data/closure-library/closure/goog/structs/inversionmap_test.html +157 -0
  976. data/closure-library/closure/goog/structs/linkedmap.js +472 -0
  977. data/closure-library/closure/goog/structs/linkedmap_test.html +300 -0
  978. data/closure-library/closure/goog/structs/map.js +446 -0
  979. data/closure-library/closure/goog/structs/map_test.html +430 -0
  980. data/closure-library/closure/goog/structs/node.js +74 -0
  981. data/closure-library/closure/goog/structs/pool.js +344 -0
  982. data/closure-library/closure/goog/structs/pool_test.html +265 -0
  983. data/closure-library/closure/goog/structs/prioritypool.js +147 -0
  984. data/closure-library/closure/goog/structs/prioritypool_test.html +478 -0
  985. data/closure-library/closure/goog/structs/priorityqueue.js +64 -0
  986. data/closure-library/closure/goog/structs/priorityqueue_test.html +179 -0
  987. data/closure-library/closure/goog/structs/quadtree.js +571 -0
  988. data/closure-library/closure/goog/structs/quadtree_test.html +179 -0
  989. data/closure-library/closure/goog/structs/queue.js +157 -0
  990. data/closure-library/closure/goog/structs/queue_test.html +140 -0
  991. data/closure-library/closure/goog/structs/set.js +251 -0
  992. data/closure-library/closure/goog/structs/set_test.html +551 -0
  993. data/closure-library/closure/goog/structs/simplepool.js +203 -0
  994. data/closure-library/closure/goog/structs/stringset.js +404 -0
  995. data/closure-library/closure/goog/structs/stringset_test.html +251 -0
  996. data/closure-library/closure/goog/structs/structs.js +341 -0
  997. data/closure-library/closure/goog/structs/structs_test.html +1050 -0
  998. data/closure-library/closure/goog/structs/treenode.js +312 -0
  999. data/closure-library/closure/goog/structs/treenode_test.html +285 -0
  1000. data/closure-library/closure/goog/structs/trie.js +368 -0
  1001. data/closure-library/closure/goog/structs/trie_test.html +378 -0
  1002. data/closure-library/closure/goog/style/cursor.js +125 -0
  1003. data/closure-library/closure/goog/style/cursor_test.html +131 -0
  1004. data/closure-library/closure/goog/style/style.js +1804 -0
  1005. data/closure-library/closure/goog/style/style_quirks_test.html +1928 -0
  1006. data/closure-library/closure/goog/style/style_test.html +2073 -0
  1007. data/closure-library/closure/goog/style/style_test_iframe_quirk.html +29 -0
  1008. data/closure-library/closure/goog/style/style_test_iframe_standard.html +30 -0
  1009. data/closure-library/closure/goog/style/style_test_quirk.html +9 -0
  1010. data/closure-library/closure/goog/style/style_test_standard.html +11 -0
  1011. data/closure-library/closure/goog/testing/asserts.js +970 -0
  1012. data/closure-library/closure/goog/testing/asserts_test.html +966 -0
  1013. data/closure-library/closure/goog/testing/async/mockcontrol.js +174 -0
  1014. data/closure-library/closure/goog/testing/async/mockcontrol_test.html +224 -0
  1015. data/closure-library/closure/goog/testing/asynctestcase.js +812 -0
  1016. data/closure-library/closure/goog/testing/asynctestcase_async_test.html +102 -0
  1017. data/closure-library/closure/goog/testing/asynctestcase_noasync_test.html +98 -0
  1018. data/closure-library/closure/goog/testing/benchmark.js +87 -0
  1019. data/closure-library/closure/goog/testing/benchmarks/jsbinarysizebutton.js +64 -0
  1020. data/closure-library/closure/goog/testing/benchmarks/jsbinarysizebutton_test.html +58 -0
  1021. data/closure-library/closure/goog/testing/benchmarks/jsbinarysizetoolbar.js +66 -0
  1022. data/closure-library/closure/goog/testing/benchmarks/jsbinarysizetoolbar_test.html +49 -0
  1023. data/closure-library/closure/goog/testing/continuationtestcase.js +682 -0
  1024. data/closure-library/closure/goog/testing/continuationtestcase_test.html +349 -0
  1025. data/closure-library/closure/goog/testing/deferredtestcase.js +157 -0
  1026. data/closure-library/closure/goog/testing/deferredtestcase_test.html +152 -0
  1027. data/closure-library/closure/goog/testing/dom.js +596 -0
  1028. data/closure-library/closure/goog/testing/dom_test.html +438 -0
  1029. data/closure-library/closure/goog/testing/editor/dom.js +293 -0
  1030. data/closure-library/closure/goog/testing/editor/dom_test.html +295 -0
  1031. data/closure-library/closure/goog/testing/editor/fieldmock.js +90 -0
  1032. data/closure-library/closure/goog/testing/editor/testhelper.js +168 -0
  1033. data/closure-library/closure/goog/testing/editor/testhelper_test.html +176 -0
  1034. data/closure-library/closure/goog/testing/events/eventobserver.js +85 -0
  1035. data/closure-library/closure/goog/testing/events/eventobserver_test.html +70 -0
  1036. data/closure-library/closure/goog/testing/events/events.js +540 -0
  1037. data/closure-library/closure/goog/testing/events/events_test.html +434 -0
  1038. data/closure-library/closure/goog/testing/events/matchers.js +41 -0
  1039. data/closure-library/closure/goog/testing/events/matchers_test.html +40 -0
  1040. data/closure-library/closure/goog/testing/expectedfailures.js +236 -0
  1041. data/closure-library/closure/goog/testing/expectedfailures_test.html +122 -0
  1042. data/closure-library/closure/goog/testing/fs/blob.js +74 -0
  1043. data/closure-library/closure/goog/testing/fs/blob_test.html +53 -0
  1044. data/closure-library/closure/goog/testing/fs/directoryentry_test.html +185 -0
  1045. data/closure-library/closure/goog/testing/fs/entry.js +511 -0
  1046. data/closure-library/closure/goog/testing/fs/entry_test.html +153 -0
  1047. data/closure-library/closure/goog/testing/fs/file.js +51 -0
  1048. data/closure-library/closure/goog/testing/fs/fileentry_test.html +54 -0
  1049. data/closure-library/closure/goog/testing/fs/filesystem.js +64 -0
  1050. data/closure-library/closure/goog/testing/fs/filewriter.js +314 -0
  1051. data/closure-library/closure/goog/testing/fs/filewriter_test.html +248 -0
  1052. data/closure-library/closure/goog/testing/fs/fs.js +146 -0
  1053. data/closure-library/closure/goog/testing/fs/fs_test.html +54 -0
  1054. data/closure-library/closure/goog/testing/fs/integration_test.html +219 -0
  1055. data/closure-library/closure/goog/testing/functionmock.js +157 -0
  1056. data/closure-library/closure/goog/testing/functionmock_test.html +357 -0
  1057. data/closure-library/closure/goog/testing/graphics.js +64 -0
  1058. data/closure-library/closure/goog/testing/jsunit.js +144 -0
  1059. data/closure-library/closure/goog/testing/loosemock.js +240 -0
  1060. data/closure-library/closure/goog/testing/loosemock_test.html +343 -0
  1061. data/closure-library/closure/goog/testing/messaging/mockmessagechannel.js +77 -0
  1062. data/closure-library/closure/goog/testing/messaging/mockmessageevent.js +100 -0
  1063. data/closure-library/closure/goog/testing/mock.js +556 -0
  1064. data/closure-library/closure/goog/testing/mock_test.html +208 -0
  1065. data/closure-library/closure/goog/testing/mockclassfactory.js +580 -0
  1066. data/closure-library/closure/goog/testing/mockclassfactory_test.html +241 -0
  1067. data/closure-library/closure/goog/testing/mockclock.js +395 -0
  1068. data/closure-library/closure/goog/testing/mockclock_test.html +413 -0
  1069. data/closure-library/closure/goog/testing/mockcontrol.js +210 -0
  1070. data/closure-library/closure/goog/testing/mockcontrol_test.html +127 -0
  1071. data/closure-library/closure/goog/testing/mockinterface.js +45 -0
  1072. data/closure-library/closure/goog/testing/mockmatchers.js +395 -0
  1073. data/closure-library/closure/goog/testing/mockmatchers_test.html +388 -0
  1074. data/closure-library/closure/goog/testing/mockrandom.js +128 -0
  1075. data/closure-library/closure/goog/testing/mockrandom_test.html +56 -0
  1076. data/closure-library/closure/goog/testing/mockrange.js +65 -0
  1077. data/closure-library/closure/goog/testing/mockrange_test.html +41 -0
  1078. data/closure-library/closure/goog/testing/mockuseragent.js +143 -0
  1079. data/closure-library/closure/goog/testing/mockuseragent_test.html +59 -0
  1080. data/closure-library/closure/goog/testing/multitestrunner.js +1442 -0
  1081. data/closure-library/closure/goog/testing/net/xhrio.js +595 -0
  1082. data/closure-library/closure/goog/testing/net/xhrio_test.html +321 -0
  1083. data/closure-library/closure/goog/testing/objectpropertystring.js +67 -0
  1084. data/closure-library/closure/goog/testing/performancetable.css +46 -0
  1085. data/closure-library/closure/goog/testing/performancetable.js +162 -0
  1086. data/closure-library/closure/goog/testing/performancetimer.js +166 -0
  1087. data/closure-library/closure/goog/testing/performancetimer_test.html +107 -0
  1088. data/closure-library/closure/goog/testing/propertyreplacer.js +243 -0
  1089. data/closure-library/closure/goog/testing/propertyreplacer_test.html +368 -0
  1090. data/closure-library/closure/goog/testing/pseudorandom.js +162 -0
  1091. data/closure-library/closure/goog/testing/pseudorandom_test.html +98 -0
  1092. data/closure-library/closure/goog/testing/recordfunction.js +194 -0
  1093. data/closure-library/closure/goog/testing/recordfunction_test.html +147 -0
  1094. data/closure-library/closure/goog/testing/singleton.js +82 -0
  1095. data/closure-library/closure/goog/testing/singleton_test.html +39 -0
  1096. data/closure-library/closure/goog/testing/stacktrace.js +470 -0
  1097. data/closure-library/closure/goog/testing/stacktrace_test.html +229 -0
  1098. data/closure-library/closure/goog/testing/strictmock.js +124 -0
  1099. data/closure-library/closure/goog/testing/strictmock_test.html +368 -0
  1100. data/closure-library/closure/goog/testing/style/layoutasserts.js +368 -0
  1101. data/closure-library/closure/goog/testing/style/layoutasserts_test.html +269 -0
  1102. data/closure-library/closure/goog/testing/testcase.js +1053 -0
  1103. data/closure-library/closure/goog/testing/testqueue.js +66 -0
  1104. data/closure-library/closure/goog/testing/testrunner.js +391 -0
  1105. data/closure-library/closure/goog/testing/ui/rendererasserts.js +50 -0
  1106. data/closure-library/closure/goog/testing/ui/rendererasserts_test.html +51 -0
  1107. data/closure-library/closure/goog/testing/ui/rendererharness.js +175 -0
  1108. data/closure-library/closure/goog/testing/ui/style.js +137 -0
  1109. data/closure-library/closure/goog/testing/ui/style_reference.html +27 -0
  1110. data/closure-library/closure/goog/testing/ui/style_test.html +130 -0
  1111. data/closure-library/closure/goog/timer/timer.js +285 -0
  1112. data/closure-library/closure/goog/timer/timer_test.html +118 -0
  1113. data/closure-library/closure/goog/tweak/entries.js +990 -0
  1114. data/closure-library/closure/goog/tweak/entries_test.html +94 -0
  1115. data/closure-library/closure/goog/tweak/registry.js +310 -0
  1116. data/closure-library/closure/goog/tweak/registry_test.html +144 -0
  1117. data/closure-library/closure/goog/tweak/testhelpers.js +111 -0
  1118. data/closure-library/closure/goog/tweak/tweak.js +318 -0
  1119. data/closure-library/closure/goog/tweak/tweakui.js +817 -0
  1120. data/closure-library/closure/goog/tweak/tweakui_test.html +280 -0
  1121. data/closure-library/closure/goog/ui/abstractspellchecker.js +1069 -0
  1122. data/closure-library/closure/goog/ui/activitymonitor.js +286 -0
  1123. data/closure-library/closure/goog/ui/activitymonitor_test.html +44 -0
  1124. data/closure-library/closure/goog/ui/advancedtooltip.js +369 -0
  1125. data/closure-library/closure/goog/ui/advancedtooltip_test.html +274 -0
  1126. data/closure-library/closure/goog/ui/animatedzippy.js +190 -0
  1127. data/closure-library/closure/goog/ui/attachablemenu.js +464 -0
  1128. data/closure-library/closure/goog/ui/autocomplete/arraymatcher.js +156 -0
  1129. data/closure-library/closure/goog/ui/autocomplete/arraymatcher_test.html +130 -0
  1130. data/closure-library/closure/goog/ui/autocomplete/autocomplete.js +627 -0
  1131. data/closure-library/closure/goog/ui/autocomplete/autocomplete_test.html +537 -0
  1132. data/closure-library/closure/goog/ui/autocomplete/basic.js +53 -0
  1133. data/closure-library/closure/goog/ui/autocomplete/basic_test.html +204 -0
  1134. data/closure-library/closure/goog/ui/autocomplete/inputhandler.js +1209 -0
  1135. data/closure-library/closure/goog/ui/autocomplete/inputhandler_test.html +555 -0
  1136. data/closure-library/closure/goog/ui/autocomplete/remote.js +117 -0
  1137. data/closure-library/closure/goog/ui/autocomplete/remotearraymatcher.js +273 -0
  1138. data/closure-library/closure/goog/ui/autocomplete/remotearraymatcher_test.html +73 -0
  1139. data/closure-library/closure/goog/ui/autocomplete/renderer.js +852 -0
  1140. data/closure-library/closure/goog/ui/autocomplete/renderer_test.html +386 -0
  1141. data/closure-library/closure/goog/ui/autocomplete/richinputhandler.js +59 -0
  1142. data/closure-library/closure/goog/ui/autocomplete/richremote.js +108 -0
  1143. data/closure-library/closure/goog/ui/autocomplete/richremotearraymatcher.js +126 -0
  1144. data/closure-library/closure/goog/ui/basicmenu.js +930 -0
  1145. data/closure-library/closure/goog/ui/bidiinput.js +164 -0
  1146. data/closure-library/closure/goog/ui/bubble.js +475 -0
  1147. data/closure-library/closure/goog/ui/button.js +208 -0
  1148. data/closure-library/closure/goog/ui/button_test.html +257 -0
  1149. data/closure-library/closure/goog/ui/buttonrenderer.js +205 -0
  1150. data/closure-library/closure/goog/ui/buttonrenderer_test.html +190 -0
  1151. data/closure-library/closure/goog/ui/buttonside.js +40 -0
  1152. data/closure-library/closure/goog/ui/cccbutton.js +281 -0
  1153. data/closure-library/closure/goog/ui/charcounter.js +200 -0
  1154. data/closure-library/closure/goog/ui/charpicker.js +807 -0
  1155. data/closure-library/closure/goog/ui/checkbox.js +303 -0
  1156. data/closure-library/closure/goog/ui/checkbox_test.html +224 -0
  1157. data/closure-library/closure/goog/ui/checkboxmenuitem.js +53 -0
  1158. data/closure-library/closure/goog/ui/colorbutton.js +58 -0
  1159. data/closure-library/closure/goog/ui/colorbutton_test.html +70 -0
  1160. data/closure-library/closure/goog/ui/colorbuttonrenderer.js +72 -0
  1161. data/closure-library/closure/goog/ui/colormenubutton.js +213 -0
  1162. data/closure-library/closure/goog/ui/colormenubuttonrenderer.js +144 -0
  1163. data/closure-library/closure/goog/ui/colormenubuttonrenderer_test.html +88 -0
  1164. data/closure-library/closure/goog/ui/colorpalette.js +162 -0
  1165. data/closure-library/closure/goog/ui/colorpalette_test.html +169 -0
  1166. data/closure-library/closure/goog/ui/colorpicker.js +344 -0
  1167. data/closure-library/closure/goog/ui/colorsplitbehavior.js +61 -0
  1168. data/closure-library/closure/goog/ui/combobox.js +894 -0
  1169. data/closure-library/closure/goog/ui/combobox_test.html +208 -0
  1170. data/closure-library/closure/goog/ui/component.js +1187 -0
  1171. data/closure-library/closure/goog/ui/component_test.html +723 -0
  1172. data/closure-library/closure/goog/ui/container.js +1296 -0
  1173. data/closure-library/closure/goog/ui/container_test.html +450 -0
  1174. data/closure-library/closure/goog/ui/containerrenderer.js +370 -0
  1175. data/closure-library/closure/goog/ui/containerrenderer_test.html +227 -0
  1176. data/closure-library/closure/goog/ui/containerscroller.js +221 -0
  1177. data/closure-library/closure/goog/ui/containerscroller_test.html +213 -0
  1178. data/closure-library/closure/goog/ui/control.js +1348 -0
  1179. data/closure-library/closure/goog/ui/control_test.html +2128 -0
  1180. data/closure-library/closure/goog/ui/controlcontent.js +28 -0
  1181. data/closure-library/closure/goog/ui/controlrenderer.js +808 -0
  1182. data/closure-library/closure/goog/ui/controlrenderer_test.html +840 -0
  1183. data/closure-library/closure/goog/ui/cookieeditor.js +182 -0
  1184. data/closure-library/closure/goog/ui/cookieeditor_test.html +102 -0
  1185. data/closure-library/closure/goog/ui/css3buttonrenderer.js +147 -0
  1186. data/closure-library/closure/goog/ui/css3menubuttonrenderer.js +144 -0
  1187. data/closure-library/closure/goog/ui/cssnames.js +28 -0
  1188. data/closure-library/closure/goog/ui/custombutton.js +58 -0
  1189. data/closure-library/closure/goog/ui/custombuttonrenderer.js +254 -0
  1190. data/closure-library/closure/goog/ui/customcolorpalette.js +137 -0
  1191. data/closure-library/closure/goog/ui/customcolorpalette_test.html +60 -0
  1192. data/closure-library/closure/goog/ui/datepicker.js +1339 -0
  1193. data/closure-library/closure/goog/ui/datepicker_test.html +190 -0
  1194. data/closure-library/closure/goog/ui/decorate.js +37 -0
  1195. data/closure-library/closure/goog/ui/decorate_test.html +113 -0
  1196. data/closure-library/closure/goog/ui/deprecatedbutton.js +381 -0
  1197. data/closure-library/closure/goog/ui/dialog.js +1776 -0
  1198. data/closure-library/closure/goog/ui/dialog_test.html +493 -0
  1199. data/closure-library/closure/goog/ui/dimensionpicker.js +289 -0
  1200. data/closure-library/closure/goog/ui/dimensionpicker_test.html +128 -0
  1201. data/closure-library/closure/goog/ui/dimensionpickerrenderer.js +387 -0
  1202. data/closure-library/closure/goog/ui/dragdropdetector.js +642 -0
  1203. data/closure-library/closure/goog/ui/drilldownrow.js +494 -0
  1204. data/closure-library/closure/goog/ui/editor/abstractdialog.js +443 -0
  1205. data/closure-library/closure/goog/ui/editor/abstractdialog_test.html +467 -0
  1206. data/closure-library/closure/goog/ui/editor/bubble.js +520 -0
  1207. data/closure-library/closure/goog/ui/editor/bubble_test.html +264 -0
  1208. data/closure-library/closure/goog/ui/editor/defaulttoolbar.js +1062 -0
  1209. data/closure-library/closure/goog/ui/editor/linkdialog.js +833 -0
  1210. data/closure-library/closure/goog/ui/editor/linkdialog_test.html +449 -0
  1211. data/closure-library/closure/goog/ui/editor/messages.js +115 -0
  1212. data/closure-library/closure/goog/ui/editor/tabpane.js +183 -0
  1213. data/closure-library/closure/goog/ui/editor/toolbarcontroller.js +293 -0
  1214. data/closure-library/closure/goog/ui/editor/toolbarfactory.js +437 -0
  1215. data/closure-library/closure/goog/ui/editor/toolbarfactory_test.html +73 -0
  1216. data/closure-library/closure/goog/ui/emoji/emoji.js +72 -0
  1217. data/closure-library/closure/goog/ui/emoji/emojipalette.js +298 -0
  1218. data/closure-library/closure/goog/ui/emoji/emojipaletterenderer.js +206 -0
  1219. data/closure-library/closure/goog/ui/emoji/emojipicker.js +797 -0
  1220. data/closure-library/closure/goog/ui/emoji/emojipicker_test.html +840 -0
  1221. data/closure-library/closure/goog/ui/emoji/fast_nonprogressive_emojipicker_test.html +256 -0
  1222. data/closure-library/closure/goog/ui/emoji/fast_progressive_emojipicker_test.html +256 -0
  1223. data/closure-library/closure/goog/ui/emoji/popupemojipicker.js +410 -0
  1224. data/closure-library/closure/goog/ui/emoji/popupemojipicker_test.html +80 -0
  1225. data/closure-library/closure/goog/ui/emoji/progressiveemojipaletterenderer.js +97 -0
  1226. data/closure-library/closure/goog/ui/emoji/spriteinfo.js +212 -0
  1227. data/closure-library/closure/goog/ui/emoji/spriteinfo_test.html +51 -0
  1228. data/closure-library/closure/goog/ui/filteredmenu.js +562 -0
  1229. data/closure-library/closure/goog/ui/filteredmenu_test.html +299 -0
  1230. data/closure-library/closure/goog/ui/filterobservingmenuitem.js +97 -0
  1231. data/closure-library/closure/goog/ui/filterobservingmenuitemrenderer.js +60 -0
  1232. data/closure-library/closure/goog/ui/flatbuttonrenderer.js +138 -0
  1233. data/closure-library/closure/goog/ui/flatmenubuttonrenderer.js +199 -0
  1234. data/closure-library/closure/goog/ui/formpost.js +109 -0
  1235. data/closure-library/closure/goog/ui/formpost_test.html +109 -0
  1236. data/closure-library/closure/goog/ui/gauge.js +999 -0
  1237. data/closure-library/closure/goog/ui/gaugetheme.js +169 -0
  1238. data/closure-library/closure/goog/ui/hovercard.js +447 -0
  1239. data/closure-library/closure/goog/ui/hovercard_test.html +343 -0
  1240. data/closure-library/closure/goog/ui/hsvapalette.js +311 -0
  1241. data/closure-library/closure/goog/ui/hsvapalette_test.html +152 -0
  1242. data/closure-library/closure/goog/ui/hsvpalette.js +470 -0
  1243. data/closure-library/closure/goog/ui/hsvpalette_test.html +202 -0
  1244. data/closure-library/closure/goog/ui/idgenerator.js +57 -0
  1245. data/closure-library/closure/goog/ui/idletimer.js +299 -0
  1246. data/closure-library/closure/goog/ui/idletimer_test.html +100 -0
  1247. data/closure-library/closure/goog/ui/iframemask.js +256 -0
  1248. data/closure-library/closure/goog/ui/iframemask_test.html +230 -0
  1249. data/closure-library/closure/goog/ui/imagelessbuttonrenderer.js +204 -0
  1250. data/closure-library/closure/goog/ui/imagelessmenubuttonrenderer.js +202 -0
  1251. data/closure-library/closure/goog/ui/imagelessroundedcorner.js +971 -0
  1252. data/closure-library/closure/goog/ui/inputdatepicker.js +306 -0
  1253. data/closure-library/closure/goog/ui/inputdatepicker_test.html +109 -0
  1254. data/closure-library/closure/goog/ui/itemevent.js +50 -0
  1255. data/closure-library/closure/goog/ui/keyboardshortcuthandler.js +981 -0
  1256. data/closure-library/closure/goog/ui/keyboardshortcuthandler_test.html +671 -0
  1257. data/closure-library/closure/goog/ui/labelinput.js +439 -0
  1258. data/closure-library/closure/goog/ui/linkbuttonrenderer.js +67 -0
  1259. data/closure-library/closure/goog/ui/media/flashobject.js +629 -0
  1260. data/closure-library/closure/goog/ui/media/flashobject_test.html +236 -0
  1261. data/closure-library/closure/goog/ui/media/flickr.js +309 -0
  1262. data/closure-library/closure/goog/ui/media/flickr_test.html +90 -0
  1263. data/closure-library/closure/goog/ui/media/media.js +284 -0
  1264. data/closure-library/closure/goog/ui/media/media_test.html +161 -0
  1265. data/closure-library/closure/goog/ui/media/mediamodel.js +840 -0
  1266. data/closure-library/closure/goog/ui/media/mp3.js +225 -0
  1267. data/closure-library/closure/goog/ui/media/mp3_test.html +78 -0
  1268. data/closure-library/closure/goog/ui/media/photo.js +139 -0
  1269. data/closure-library/closure/goog/ui/media/photo_test.html +62 -0
  1270. data/closure-library/closure/goog/ui/media/picasa.js +317 -0
  1271. data/closure-library/closure/goog/ui/media/picasa_test.html +131 -0
  1272. data/closure-library/closure/goog/ui/media/vimeo.js +264 -0
  1273. data/closure-library/closure/goog/ui/media/vimeo_test.html +79 -0
  1274. data/closure-library/closure/goog/ui/media/youtube.js +328 -0
  1275. data/closure-library/closure/goog/ui/media/youtube_test.html +185 -0
  1276. data/closure-library/closure/goog/ui/menu.js +435 -0
  1277. data/closure-library/closure/goog/ui/menu_test.html +129 -0
  1278. data/closure-library/closure/goog/ui/menubase.js +191 -0
  1279. data/closure-library/closure/goog/ui/menubutton.js +809 -0
  1280. data/closure-library/closure/goog/ui/menubutton_test.html +440 -0
  1281. data/closure-library/closure/goog/ui/menubutton_test_frame.html +41 -0
  1282. data/closure-library/closure/goog/ui/menubuttonrenderer.js +226 -0
  1283. data/closure-library/closure/goog/ui/menubuttonrenderer_test.html +161 -0
  1284. data/closure-library/closure/goog/ui/menuheader.js +62 -0
  1285. data/closure-library/closure/goog/ui/menuheaderrenderer.js +55 -0
  1286. data/closure-library/closure/goog/ui/menuitem.js +154 -0
  1287. data/closure-library/closure/goog/ui/menuitem_test.html +506 -0
  1288. data/closure-library/closure/goog/ui/menuitemrenderer.js +353 -0
  1289. data/closure-library/closure/goog/ui/menuitemrenderer_test.html +190 -0
  1290. data/closure-library/closure/goog/ui/menurenderer.js +118 -0
  1291. data/closure-library/closure/goog/ui/menuseparator.js +51 -0
  1292. data/closure-library/closure/goog/ui/menuseparatorrenderer.js +102 -0
  1293. data/closure-library/closure/goog/ui/mockactivitymonitor.js +54 -0
  1294. data/closure-library/closure/goog/ui/nativebuttonrenderer.js +205 -0
  1295. data/closure-library/closure/goog/ui/nativebuttonrenderer_test.html +213 -0
  1296. data/closure-library/closure/goog/ui/offlineinstalldialog.js +1086 -0
  1297. data/closure-library/closure/goog/ui/offlinestatuscard.js +580 -0
  1298. data/closure-library/closure/goog/ui/offlinestatuscomponent.js +545 -0
  1299. data/closure-library/closure/goog/ui/option.js +67 -0
  1300. data/closure-library/closure/goog/ui/palette.js +528 -0
  1301. data/closure-library/closure/goog/ui/paletterenderer.js +318 -0
  1302. data/closure-library/closure/goog/ui/plaintextspellchecker.js +668 -0
  1303. data/closure-library/closure/goog/ui/plaintextspellchecker_test.html +240 -0
  1304. data/closure-library/closure/goog/ui/popup.js +410 -0
  1305. data/closure-library/closure/goog/ui/popup_test.html +137 -0
  1306. data/closure-library/closure/goog/ui/popupbase.js +721 -0
  1307. data/closure-library/closure/goog/ui/popupbase_test.html +186 -0
  1308. data/closure-library/closure/goog/ui/popupcolorpicker.js +441 -0
  1309. data/closure-library/closure/goog/ui/popupcolorpicker_test.html +71 -0
  1310. data/closure-library/closure/goog/ui/popupdatepicker.js +273 -0
  1311. data/closure-library/closure/goog/ui/popupmenu.js +539 -0
  1312. data/closure-library/closure/goog/ui/popupmenu_test.html +197 -0
  1313. data/closure-library/closure/goog/ui/progressbar.js +390 -0
  1314. data/closure-library/closure/goog/ui/prompt.js +307 -0
  1315. data/closure-library/closure/goog/ui/prompt_test.html +65 -0
  1316. data/closure-library/closure/goog/ui/rangemodel.js +301 -0
  1317. data/closure-library/closure/goog/ui/rangemodel_test.html +270 -0
  1318. data/closure-library/closure/goog/ui/ratings.js +441 -0
  1319. data/closure-library/closure/goog/ui/registry.js +166 -0
  1320. data/closure-library/closure/goog/ui/registry_test.html +236 -0
  1321. data/closure-library/closure/goog/ui/richtextspellchecker.js +600 -0
  1322. data/closure-library/closure/goog/ui/richtextspellchecker_test.html +224 -0
  1323. data/closure-library/closure/goog/ui/roundedcorners.js +694 -0
  1324. data/closure-library/closure/goog/ui/roundedpanel.js +609 -0
  1325. data/closure-library/closure/goog/ui/roundedpanel_test.html +57 -0
  1326. data/closure-library/closure/goog/ui/roundedtabrenderer.js +196 -0
  1327. data/closure-library/closure/goog/ui/scrollfloater.js +394 -0
  1328. data/closure-library/closure/goog/ui/scrollfloater_test.html +46 -0
  1329. data/closure-library/closure/goog/ui/select.js +397 -0
  1330. data/closure-library/closure/goog/ui/select_test.html +152 -0
  1331. data/closure-library/closure/goog/ui/selectionmenubutton.js +277 -0
  1332. data/closure-library/closure/goog/ui/selectionmenubutton_test.html +237 -0
  1333. data/closure-library/closure/goog/ui/selectionmodel.js +291 -0
  1334. data/closure-library/closure/goog/ui/separator.js +74 -0
  1335. data/closure-library/closure/goog/ui/serverchart.js +1791 -0
  1336. data/closure-library/closure/goog/ui/serverchart_test.html +598 -0
  1337. data/closure-library/closure/goog/ui/slider.js +125 -0
  1338. data/closure-library/closure/goog/ui/sliderbase.js +1087 -0
  1339. data/closure-library/closure/goog/ui/sliderbase_test.html +198 -0
  1340. data/closure-library/closure/goog/ui/splitbehavior.js +348 -0
  1341. data/closure-library/closure/goog/ui/splitbehavior_test.html +161 -0
  1342. data/closure-library/closure/goog/ui/splitpane.js +844 -0
  1343. data/closure-library/closure/goog/ui/splitpane_test.html +143 -0
  1344. data/closure-library/closure/goog/ui/style/app/buttonrenderer.js +204 -0
  1345. data/closure-library/closure/goog/ui/style/app/buttonrenderer_test.html +155 -0
  1346. data/closure-library/closure/goog/ui/style/app/menubuttonrenderer.js +227 -0
  1347. data/closure-library/closure/goog/ui/style/app/menubuttonrenderer_test.html +167 -0
  1348. data/closure-library/closure/goog/ui/style/app/primaryactionbuttonrenderer.js +88 -0
  1349. data/closure-library/closure/goog/ui/style/app/primaryactionbuttonrenderer_test.html +76 -0
  1350. data/closure-library/closure/goog/ui/submenu.js +660 -0
  1351. data/closure-library/closure/goog/ui/submenu_test.html +446 -0
  1352. data/closure-library/closure/goog/ui/submenurenderer.js +188 -0
  1353. data/closure-library/closure/goog/ui/tab.js +102 -0
  1354. data/closure-library/closure/goog/ui/tab_test.html +61 -0
  1355. data/closure-library/closure/goog/ui/tabbar.js +393 -0
  1356. data/closure-library/closure/goog/ui/tabbar_test.html +611 -0
  1357. data/closure-library/closure/goog/ui/tabbarrenderer.js +173 -0
  1358. data/closure-library/closure/goog/ui/tabbarrenderer_test.html +137 -0
  1359. data/closure-library/closure/goog/ui/tablesorter.js +304 -0
  1360. data/closure-library/closure/goog/ui/tablesorter_test.html +127 -0
  1361. data/closure-library/closure/goog/ui/tabpane.js +674 -0
  1362. data/closure-library/closure/goog/ui/tabpane_test.html +107 -0
  1363. data/closure-library/closure/goog/ui/tabrenderer.js +152 -0
  1364. data/closure-library/closure/goog/ui/tabrenderer_test.html +132 -0
  1365. data/closure-library/closure/goog/ui/textarea.js +573 -0
  1366. data/closure-library/closure/goog/ui/textarea_test.html +305 -0
  1367. data/closure-library/closure/goog/ui/textarearenderer.js +167 -0
  1368. data/closure-library/closure/goog/ui/togglebutton.js +58 -0
  1369. data/closure-library/closure/goog/ui/toolbar.js +45 -0
  1370. data/closure-library/closure/goog/ui/toolbarbutton.js +54 -0
  1371. data/closure-library/closure/goog/ui/toolbarbuttonrenderer.js +55 -0
  1372. data/closure-library/closure/goog/ui/toolbarcolormenubutton.js +57 -0
  1373. data/closure-library/closure/goog/ui/toolbarcolormenubuttonrenderer.js +95 -0
  1374. data/closure-library/closure/goog/ui/toolbarcolormenubuttonrenderer_test.html +66 -0
  1375. data/closure-library/closure/goog/ui/toolbarmenubutton.js +56 -0
  1376. data/closure-library/closure/goog/ui/toolbarmenubuttonrenderer.js +55 -0
  1377. data/closure-library/closure/goog/ui/toolbarrenderer.js +95 -0
  1378. data/closure-library/closure/goog/ui/toolbarselect.js +55 -0
  1379. data/closure-library/closure/goog/ui/toolbarseparator.js +51 -0
  1380. data/closure-library/closure/goog/ui/toolbarseparatorrenderer.js +87 -0
  1381. data/closure-library/closure/goog/ui/toolbartogglebutton.js +53 -0
  1382. data/closure-library/closure/goog/ui/tooltip.js +975 -0
  1383. data/closure-library/closure/goog/ui/tooltip_test.html +351 -0
  1384. data/closure-library/closure/goog/ui/tree/basenode.js +1457 -0
  1385. data/closure-library/closure/goog/ui/tree/basenode_test.html +218 -0
  1386. data/closure-library/closure/goog/ui/tree/treecontrol.js +656 -0
  1387. data/closure-library/closure/goog/ui/tree/treecontrol_test.html +113 -0
  1388. data/closure-library/closure/goog/ui/tree/treenode.js +102 -0
  1389. data/closure-library/closure/goog/ui/tree/typeahead.js +332 -0
  1390. data/closure-library/closure/goog/ui/tree/typeahead_test.html +133 -0
  1391. data/closure-library/closure/goog/ui/tristatemenuitem.js +185 -0
  1392. data/closure-library/closure/goog/ui/tristatemenuitemrenderer.js +86 -0
  1393. data/closure-library/closure/goog/ui/twothumbslider.js +134 -0
  1394. data/closure-library/closure/goog/ui/zippy.js +277 -0
  1395. data/closure-library/closure/goog/ui/zippy_test.html +223 -0
  1396. data/closure-library/closure/goog/uri/uri.js +1595 -0
  1397. data/closure-library/closure/goog/uri/uri_test.html +837 -0
  1398. data/closure-library/closure/goog/uri/utils.js +972 -0
  1399. data/closure-library/closure/goog/uri/utils_test.html +521 -0
  1400. data/closure-library/closure/goog/useragent/adobereader.js +90 -0
  1401. data/closure-library/closure/goog/useragent/adobereader_test.html +34 -0
  1402. data/closure-library/closure/goog/useragent/flash.js +113 -0
  1403. data/closure-library/closure/goog/useragent/flash_test.html +34 -0
  1404. data/closure-library/closure/goog/useragent/iphoto.js +86 -0
  1405. data/closure-library/closure/goog/useragent/jscript.js +94 -0
  1406. data/closure-library/closure/goog/useragent/jscript_test.html +65 -0
  1407. data/closure-library/closure/goog/useragent/picasa.js +111 -0
  1408. data/closure-library/closure/goog/useragent/platform.js +70 -0
  1409. data/closure-library/closure/goog/useragent/platform_test.html +108 -0
  1410. data/closure-library/closure/goog/useragent/product.js +253 -0
  1411. data/closure-library/closure/goog/useragent/product_isversion.js +99 -0
  1412. data/closure-library/closure/goog/useragent/product_test.html +322 -0
  1413. data/closure-library/closure/goog/useragent/useragent.js +464 -0
  1414. data/closure-library/closure/goog/useragent/useragent_test.html +290 -0
  1415. data/closure-library/closure/goog/window/window.js +206 -0
  1416. data/closure-library/closure/goog/window/window_test.html +185 -0
  1417. data/closure-library/third_party/closure/goog/base.js +2 -0
  1418. data/closure-library/third_party/closure/goog/caja/string/html/htmlparser.js +611 -0
  1419. data/closure-library/third_party/closure/goog/caja/string/html/htmlsanitizer.js +605 -0
  1420. data/closure-library/third_party/closure/goog/deps.js +26 -0
  1421. data/closure-library/third_party/closure/goog/dojo/dom/query.js +1532 -0
  1422. data/closure-library/third_party/closure/goog/dojo/dom/query_test.html +63 -0
  1423. data/closure-library/third_party/closure/goog/dojo/dom/query_test.js +160 -0
  1424. data/closure-library/third_party/closure/goog/jpeg_encoder/jpeg_encoder_basic.js +751 -0
  1425. data/closure-library/third_party/closure/goog/loremipsum/text/loremipsum.js +712 -0
  1426. data/closure-library/third_party/closure/goog/loremipsum/text/loremipsum_test.html +61 -0
  1427. data/closure-library/third_party/closure/goog/mochikit/async/deferred.js +530 -0
  1428. data/closure-library/third_party/closure/goog/mochikit/async/deferred_test.html +627 -0
  1429. data/closure-library/third_party/closure/goog/mochikit/async/deferredlist.js +199 -0
  1430. data/closure-library/third_party/closure/goog/mochikit/async/deferredlist_test.html +426 -0
  1431. data/closure-library/third_party/closure/goog/osapi/osapi.js +91 -0
  1432. data/closure-library/third_party/closure/goog/silverlight/AppManifest.xml +6 -0
  1433. data/closure-library/third_party/closure/goog/silverlight/AssemblyInfo.cs +35 -0
  1434. data/closure-library/third_party/closure/goog/silverlight/ClipboardButton.xaml +9 -0
  1435. data/closure-library/third_party/closure/goog/silverlight/ClipboardButton.xaml.cs +74 -0
  1436. data/closure-library/third_party/closure/goog/silverlight/ClipboardButtonApp.xaml +8 -0
  1437. data/closure-library/third_party/closure/goog/silverlight/ClipboardButtonApp.xaml.cs +75 -0
  1438. data/closure-library/third_party/closure/goog/silverlight/ClosureClipboardButton.csproj +108 -0
  1439. data/closure-library/third_party/closure/goog/silverlight/ClosureClipboardButton.csproj.user +29 -0
  1440. data/closure-library/third_party/closure/goog/silverlight/clipboardbutton.js +279 -0
  1441. data/closure-library/third_party/closure/goog/silverlight/silverlight.js +758 -0
  1442. data/closure-library/third_party/closure/goog/silverlight/supporteduseragent.js +138 -0
  1443. data/closure-library/third_party/closure/goog/silverlight/xap_files +0 -0
  1444. data/closure-templates/COPYING +202 -0
  1445. data/closure-templates/README +47 -0
  1446. data/closure-templates/SoyToJsSrcCompiler.jar +0 -0
  1447. data/closure-templates/soyutils.js +880 -0
  1448. data/closure-templates/soyutils_usegoog.js +308 -0
  1449. data/closure.gemspec +20 -0
  1450. data/config.ru +40 -0
  1451. data/java_src/ClosureScript.java +89 -0
  1452. data/java_src/make.rb +19 -0
  1453. data/lib/closure/beanshell.rb +80 -0
  1454. data/lib/closure/compiler.rb +184 -0
  1455. data/lib/closure/file_response.rb +90 -0
  1456. data/lib/closure/goog.rb +143 -0
  1457. data/lib/closure/middleware.rb +43 -0
  1458. data/lib/closure/sass.rb +56 -0
  1459. data/lib/closure/script.rb +139 -0
  1460. data/lib/closure/server.rb +83 -0
  1461. data/lib/closure/sources.rb +310 -0
  1462. data/lib/closure/templates.rb +156 -0
  1463. data/lib/closure/version.rb +20 -0
  1464. data/lib/closure.jar +0 -0
  1465. data/lib/closure.rb +134 -0
  1466. data/scripts/demos/compile.js.erb +8 -0
  1467. data/scripts/demos/compile.out +1 -0
  1468. data/scripts/demos/compiler.haml +17 -0
  1469. data/scripts/demos/compiler.js +12 -0
  1470. data/scripts/demos/deps.js.erb +1 -0
  1471. data/scripts/demos/externs.haml +16 -0
  1472. data/scripts/demos/externs.js.erb +8 -0
  1473. data/scripts/demos/externs.out +1 -0
  1474. data/scripts/demos/externs_jquery.externs +849 -0
  1475. data/scripts/demos/externs_jquery.js +167 -0
  1476. data/scripts/demos/externs_jquerytest.js +11 -0
  1477. data/scripts/demos/helloworld.haml +15 -0
  1478. data/scripts/demos/helloworld.js +58 -0
  1479. data/scripts/demos/helloworld.soy +45 -0
  1480. data/scripts/demos/index.haml +21 -0
  1481. data/scripts/demos/rails_ujs.haml +24 -0
  1482. data/scripts/examples/rails/ujs.js +136 -0
  1483. data/scripts/favicon.ico +0 -0
  1484. data/scripts/fixtures/_partial.haml +2 -0
  1485. data/scripts/fixtures/erb.html.erb +8 -0
  1486. data/scripts/fixtures/haml.haml +6 -0
  1487. data/scripts/fixtures/html.html +9 -0
  1488. data/scripts/fixtures/route_js.js.erb +1 -0
  1489. data/scripts/index.haml +14 -0
  1490. data/test/beanshell_test.rb +22 -0
  1491. data/test/server_test.rb +67 -0
  1492. data/test/sources_test.rb +41 -0
  1493. data/test/test_helper.rb +12 -0
  1494. metadata +1577 -0
@@ -0,0 +1,1791 @@
1
+ // Copyright 2007 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
+ /**
17
+ * @fileoverview Component for generating chart PNGs using Google Chart Server.
18
+ *
19
+ * @see ../demos/serverchart.html
20
+ */
21
+
22
+
23
+ /**
24
+ * Namespace for chart functions
25
+ */
26
+ goog.provide('goog.ui.ServerChart');
27
+ goog.provide('goog.ui.ServerChart.AxisDisplayType');
28
+ goog.provide('goog.ui.ServerChart.ChartType');
29
+ goog.provide('goog.ui.ServerChart.EncodingType');
30
+ goog.provide('goog.ui.ServerChart.Event');
31
+ goog.provide('goog.ui.ServerChart.LegendPosition');
32
+ goog.provide('goog.ui.ServerChart.MaximumValue');
33
+ goog.provide('goog.ui.ServerChart.MultiAxisAlignment');
34
+ goog.provide('goog.ui.ServerChart.MultiAxisType');
35
+ goog.provide('goog.ui.ServerChart.UriParam');
36
+ goog.provide('goog.ui.ServerChart.UriTooLongEvent');
37
+
38
+ goog.require('goog.Uri');
39
+ goog.require('goog.array');
40
+ goog.require('goog.asserts');
41
+ goog.require('goog.events.Event');
42
+ goog.require('goog.string');
43
+ goog.require('goog.ui.Component');
44
+
45
+
46
+
47
+ /**
48
+ * Will construct a chart using Google's chartserver.
49
+ *
50
+ * @param {goog.ui.ServerChart.ChartType} type The chart type.
51
+ * @param {number=} opt_width The width of the chart.
52
+ * @param {number=} opt_height The height of the chart.
53
+ * @param {goog.dom.DomHelper=} opt_domHelper Optional DOM Helper.
54
+ * @param {string=} opt_uri Optional uri used to connect to the chart server, if
55
+ * different than goog.ui.ServerChart.CHART_SERVER_URI.
56
+ * @constructor
57
+ * @extends {goog.ui.Component}
58
+ */
59
+ goog.ui.ServerChart = function(type, opt_width, opt_height, opt_domHelper,
60
+ opt_uri) {
61
+ goog.ui.Component.call(this, opt_domHelper);
62
+
63
+ /**
64
+ * Image URI.
65
+ * @type {goog.Uri}
66
+ * @private
67
+ */
68
+ this.uri_ = new goog.Uri(opt_uri || goog.ui.ServerChart.CHART_SERVER_URI);
69
+
70
+ /**
71
+ * Encoding method for the URI data format.
72
+ * @type {goog.ui.ServerChart.EncodingType}
73
+ * @private
74
+ */
75
+ this.encodingType_ = goog.ui.ServerChart.EncodingType.AUTOMATIC;
76
+
77
+ /**
78
+ * Two-dimensional array of the data sets on the chart.
79
+ * @type {Array.<Array.<number>>}
80
+ * @private
81
+ */
82
+ this.dataSets_ = [];
83
+
84
+ /**
85
+ * Colors for each data set.
86
+ * @type {Array.<string>}
87
+ * @private
88
+ */
89
+ this.setColors_ = [];
90
+
91
+ /**
92
+ * Legend texts for each data set.
93
+ * @type {Array.<string>}
94
+ * @private
95
+ */
96
+ this.setLegendTexts_ = [];
97
+
98
+ /**
99
+ * Labels on the X-axis.
100
+ * @type {Array.<string>}
101
+ * @private
102
+ */
103
+ this.xLabels_ = [];
104
+
105
+ /**
106
+ * Labels on the left along the Y-axis.
107
+ * @type {Array.<string>}
108
+ * @private
109
+ */
110
+ this.leftLabels_ = [];
111
+
112
+ /**
113
+ * Labels on the right along the Y-axis.
114
+ * @type {Array.<string>}
115
+ * @private
116
+ */
117
+ this.rightLabels_ = [];
118
+
119
+ /**
120
+ * Axis type for each multi-axis in the chart. The indices into this array
121
+ * also work as the reference index for all other multi-axis properties.
122
+ * @type {Array.<goog.ui.ServerChart.MultiAxisType>}
123
+ * @private
124
+ */
125
+ this.multiAxisType_ = [];
126
+
127
+ /**
128
+ * Axis text for each multi-axis in the chart, indexed by the indices from
129
+ * multiAxisType_ in a sparse array.
130
+ * @type {Object}
131
+ * @private
132
+ */
133
+ this.multiAxisLabelText_ = {};
134
+
135
+
136
+ /**
137
+ * Axis position for each multi-axis in the chart, indexed by the indices
138
+ * from multiAxisType_ in a sparse array.
139
+ * @type {Object}
140
+ * @private
141
+ */
142
+ this.multiAxisLabelPosition_ = {};
143
+
144
+ /**
145
+ * Axis range for each multi-axis in the chart, indexed by the indices from
146
+ * multiAxisType_ in a sparse array.
147
+ * @type {Object}
148
+ * @private
149
+ */
150
+ this.multiAxisRange_ = {};
151
+
152
+ /**
153
+ * Axis style for each multi-axis in the chart, indexed by the indices from
154
+ * multiAxisType_ in a sparse array.
155
+ * @type {Object}
156
+ * @private
157
+ */
158
+ this.multiAxisLabelStyle_ = {};
159
+
160
+ this.setType(type);
161
+ this.setSize(opt_width, opt_height);
162
+
163
+ /**
164
+ * Minimum value for the chart (used for normalization). By default,
165
+ * this is set to infinity, and is eventually updated to the lowest given
166
+ * value in the data. The minimum value is then subtracted from all other
167
+ * values. For a pie chart, subtracting the minimum value does not make
168
+ * sense, so minValue_ is set to zero because 0 is the additive identity.
169
+ * @type {number}
170
+ * @private
171
+ */
172
+ this.minValue_ = this.isPieChart() ? 0 : Infinity;
173
+ };
174
+ goog.inherits(goog.ui.ServerChart, goog.ui.Component);
175
+
176
+
177
+ /**
178
+ * Base URI for the chart renderer.
179
+ * @type {string}
180
+ */
181
+ goog.ui.ServerChart.CHART_SERVER_URI = 'http://chart.apis.google.com/chart';
182
+
183
+
184
+ /**
185
+ * Base HTTPS URI for the chart renderer.
186
+ * @type {string}
187
+ */
188
+ goog.ui.ServerChart.CHART_SERVER_HTTPS_URI = 'https://www.google.com/chart';
189
+
190
+
191
+ /**
192
+ * The 0 - 1.0 ("fraction of the range") value to use when getMinValue() ==
193
+ * getMaxValue(). This determines, for example, the vertical position
194
+ * of the line in a flat line-chart.
195
+ * @type {number}
196
+ */
197
+ goog.ui.ServerChart.DEFAULT_NORMALIZATION = 0.5;
198
+
199
+
200
+ /**
201
+ * The upper limit on the length of the chart image URI, after encoding.
202
+ * If the URI's length equals or exceeds it, goog.ui.ServerChart.UriTooLongEvent
203
+ * is dispatched on the goog.ui.ServerChart object.
204
+ * @type {number}
205
+ * @private
206
+ */
207
+ goog.ui.ServerChart.prototype.uriLengthLimit_ = 2048;
208
+
209
+
210
+ /**
211
+ * Number of gridlines along the X-axis.
212
+ * @type {number}
213
+ * @private
214
+ */
215
+ goog.ui.ServerChart.prototype.gridX_ = 0;
216
+
217
+
218
+ /**
219
+ * Number of gridlines along the Y-axis.
220
+ * @type {number}
221
+ * @private
222
+ */
223
+ goog.ui.ServerChart.prototype.gridY_ = 0;
224
+
225
+
226
+ /**
227
+ * Maximum value for the chart (used for normalization). The minimum is
228
+ * declared in the constructor.
229
+ * @type {number}
230
+ * @private
231
+ */
232
+ goog.ui.ServerChart.prototype.maxValue_ = -Infinity;
233
+
234
+
235
+ /**
236
+ * Chart title.
237
+ * @type {?string}
238
+ * @private
239
+ */
240
+ goog.ui.ServerChart.prototype.title_ = null;
241
+
242
+
243
+ /**
244
+ * Chart title size.
245
+ * @type {number}
246
+ * @private
247
+ */
248
+ goog.ui.ServerChart.prototype.titleSize_ = 13.5;
249
+
250
+
251
+ /**
252
+ * Chart title color.
253
+ * @type {string}
254
+ * @private
255
+ */
256
+ goog.ui.ServerChart.prototype.titleColor_ = '333333';
257
+
258
+
259
+ /**
260
+ * Chart legend.
261
+ * @type {Array.<string>?}
262
+ * @private
263
+ */
264
+ goog.ui.ServerChart.prototype.legend_ = null;
265
+
266
+
267
+ /**
268
+ * ChartServer supports using data sets to position markers. A data set
269
+ * that is being used for positioning only can be made "invisible", in other
270
+ * words, the caller can indicate to ChartServer that ordinary chart elements
271
+ * (e.g. bars in a bar chart) should not be drawn on the data points of the
272
+ * invisible data set. Such data sets must be provided at the end of the
273
+ * chd parameter, and if invisible data sets are being used, the chd
274
+ * parameter must indicate the number of visible data sets.
275
+ * @type {?number}
276
+ * @private
277
+ */
278
+ goog.ui.ServerChart.prototype.numVisibleDataSets_ = null;
279
+
280
+
281
+ /**
282
+ * Creates the DOM node (image) needed for the Chart
283
+ */
284
+ goog.ui.ServerChart.prototype.createDom = function() {
285
+ var size = this.getSize();
286
+ this.setElementInternal(this.getDomHelper().createDom(
287
+ 'img', {'src': this.getUri(),
288
+ 'class': goog.getCssName('goog-serverchart-image'),
289
+ 'width': size[0], 'height': size[1]}));
290
+ };
291
+
292
+
293
+ /**
294
+ * Decorate an image already in the DOM.
295
+ * Expects the following structure:
296
+ * <pre>
297
+ * - img
298
+ * </pre>
299
+ *
300
+ * @param {Element} img Image to decorate.
301
+ */
302
+ goog.ui.ServerChart.prototype.decorateInternal = function(img) {
303
+ img.src = this.getUri();
304
+ this.setElementInternal(img);
305
+ };
306
+
307
+
308
+ /**
309
+ * Updates the image if any of the data or settings have changed.
310
+ */
311
+ goog.ui.ServerChart.prototype.updateChart = function() {
312
+ if (this.getElement()) {
313
+ this.getElement().src = this.getUri();
314
+ }
315
+ };
316
+
317
+
318
+ /**
319
+ * Sets the URI of the chart.
320
+ *
321
+ * @param {goog.Uri} uri The chart URI.
322
+ */
323
+ goog.ui.ServerChart.prototype.setUri = function(uri) {
324
+ this.uri_ = uri;
325
+ };
326
+
327
+
328
+ /**
329
+ * Returns the URI of the chart.
330
+ *
331
+ * @return {goog.Uri} The chart URI.
332
+ */
333
+ goog.ui.ServerChart.prototype.getUri = function() {
334
+ this.computeDataString_();
335
+ return this.uri_;
336
+ };
337
+
338
+
339
+ /**
340
+ * Returns the upper limit on the length of the chart image URI, after encoding.
341
+ * If the URI's length equals or exceeds it, goog.ui.ServerChart.UriTooLongEvent
342
+ * is dispatched on the goog.ui.ServerChart object.
343
+ *
344
+ * @return {number} The chart URI length limit.
345
+ */
346
+ goog.ui.ServerChart.prototype.getUriLengthLimit = function() {
347
+ return this.uriLengthLimit_;
348
+ };
349
+
350
+
351
+ /**
352
+ * Sets the upper limit on the length of the chart image URI, after encoding.
353
+ * If the URI's length equals or exceeds it, goog.ui.ServerChart.UriTooLongEvent
354
+ * is dispatched on the goog.ui.ServerChart object.
355
+ *
356
+ * @param {number} uriLengthLimit The chart URI length limit.
357
+ */
358
+ goog.ui.ServerChart.prototype.setUriLengthLimit = function(uriLengthLimit) {
359
+ this.uriLengthLimit_ = uriLengthLimit;
360
+ };
361
+
362
+
363
+ /**
364
+ * Sets the 'chg' parameter of the chart Uri.
365
+ * This is used by various types of charts to specify Grids.
366
+ *
367
+ * @param {string} value Value for the 'chg' parameter in the chart Uri.
368
+ */
369
+ goog.ui.ServerChart.prototype.setGridParameter = function(value) {
370
+ this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.GRID, value);
371
+ };
372
+
373
+
374
+ /**
375
+ * Returns the 'chg' parameter of the chart Uri.
376
+ * This is used by various types of charts to specify Grids.
377
+ *
378
+ * @return {string|undefined} The 'chg' parameter of the chart Uri.
379
+ */
380
+ goog.ui.ServerChart.prototype.getGridParameter = function() {
381
+ return /** @type {string} */ (
382
+ this.uri_.getParameterValue(goog.ui.ServerChart.UriParam.GRID));
383
+ };
384
+
385
+
386
+ /**
387
+ * Sets the 'chm' parameter of the chart Uri.
388
+ * This is used by various types of charts to specify Markers.
389
+ *
390
+ * @param {string} value Value for the 'chm' parameter in the chart Uri.
391
+ */
392
+ goog.ui.ServerChart.prototype.setMarkerParameter = function(value) {
393
+ this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.MARKERS, value);
394
+ };
395
+
396
+
397
+ /**
398
+ * Returns the 'chm' parameter of the chart Uri.
399
+ * This is used by various types of charts to specify Markers.
400
+ *
401
+ * @return {string|undefined} The 'chm' parameter of the chart Uri.
402
+ */
403
+ goog.ui.ServerChart.prototype.getMarkerParameter = function() {
404
+ return /** @type {string} */ (
405
+ this.uri_.getParameterValue(goog.ui.ServerChart.UriParam.MARKERS));
406
+ };
407
+
408
+
409
+ /**
410
+ * Sets the 'chp' parameter of the chart Uri.
411
+ * This is used by various types of charts to specify certain options.
412
+ * e.g., finance charts use this to designate which line is the 0 axis.
413
+ *
414
+ * @param {string|number} value Value for the 'chp' parameter in the chart Uri.
415
+ */
416
+ goog.ui.ServerChart.prototype.setMiscParameter = function(value) {
417
+ this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.MISC_PARAMS,
418
+ String(value));
419
+ };
420
+
421
+
422
+ /**
423
+ * Returns the 'chp' parameter of the chart Uri.
424
+ * This is used by various types of charts to specify certain options.
425
+ * e.g., finance charts use this to designate which line is the 0 axis.
426
+ *
427
+ * @return {string|undefined} The 'chp' parameter of the chart Uri.
428
+ */
429
+ goog.ui.ServerChart.prototype.getMiscParameter = function() {
430
+ return /** @type {string} */ (
431
+ this.uri_.getParameterValue(goog.ui.ServerChart.UriParam.MISC_PARAMS));
432
+ };
433
+
434
+
435
+ /**
436
+ * Enum of chart data encoding types
437
+ *
438
+ * @enum {string}
439
+ */
440
+ goog.ui.ServerChart.EncodingType = {
441
+ AUTOMATIC: '',
442
+ EXTENDED: 'e',
443
+ SIMPLE: 's',
444
+ TEXT: 't'
445
+ };
446
+
447
+
448
+ /**
449
+ * Enum of chart types with their short names used by the chartserver.
450
+ *
451
+ * @enum {string}
452
+ */
453
+ goog.ui.ServerChart.ChartType = {
454
+ BAR: 'br',
455
+ CLOCK: 'cf',
456
+ CONCENTRIC_PIE: 'pc',
457
+ FILLEDLINE: 'lr',
458
+ FINANCE: 'lfi',
459
+ GOOGLEOMETER: 'gom',
460
+ HORIZONTAL_GROUPED_BAR: 'bhg',
461
+ HORIZONTAL_STACKED_BAR: 'bhs',
462
+ LINE: 'lc',
463
+ MAP: 't',
464
+ MAPUSA: 'tuss',
465
+ MAPWORLD: 'twoc',
466
+ PIE: 'p',
467
+ PIE3D: 'p3',
468
+ RADAR: 'rs',
469
+ SCATTER: 's',
470
+ SPARKLINE: 'ls',
471
+ VENN: 'v',
472
+ VERTICAL_GROUPED_BAR: 'bvg',
473
+ VERTICAL_STACKED_BAR: 'bvs',
474
+ XYLINE: 'lxy'
475
+ };
476
+
477
+
478
+ /**
479
+ * Enum of multi-axis types.
480
+ *
481
+ * @enum {string}
482
+ */
483
+ goog.ui.ServerChart.MultiAxisType = {
484
+ X_AXIS: 'x',
485
+ LEFT_Y_AXIS: 'y',
486
+ RIGHT_Y_AXIS: 'r',
487
+ TOP_AXIS: 't'
488
+ };
489
+
490
+
491
+ /**
492
+ * Enum of multi-axis alignments.
493
+ *
494
+ * @enum {number}
495
+ */
496
+ goog.ui.ServerChart.MultiAxisAlignment = {
497
+ ALIGN_LEFT: -1,
498
+ ALIGN_CENTER: 0,
499
+ ALIGN_RIGHT: 1
500
+ };
501
+
502
+
503
+ /**
504
+ * Enum of legend positions.
505
+ *
506
+ * @enum {string}
507
+ */
508
+ goog.ui.ServerChart.LegendPosition = {
509
+ TOP: 't',
510
+ BOTTOM: 'b',
511
+ LEFT: 'l',
512
+ RIGHT: 'r'
513
+ };
514
+
515
+
516
+ /**
517
+ * Enum of line and tick options for an axis.
518
+ *
519
+ * @enum {string}
520
+ */
521
+ goog.ui.ServerChart.AxisDisplayType = {
522
+ LINE_AND_TICKS: 'lt',
523
+ LINE: 'l',
524
+ TICKS: 't'
525
+ };
526
+
527
+
528
+ /**
529
+ * Enum of chart maximum values in pixels, as listed at:
530
+ * http://code.google.com/apis/chart/basics.html
531
+ *
532
+ * @enum {number}
533
+ */
534
+ goog.ui.ServerChart.MaximumValue = {
535
+ WIDTH: 1000,
536
+ HEIGHT: 1000,
537
+ MAP_WIDTH: 440,
538
+ MAP_HEIGHT: 220,
539
+ TOTAL_AREA: 300000
540
+ };
541
+
542
+
543
+ /**
544
+ * Enum of ChartServer URI parameters.
545
+ *
546
+ * @enum {string}
547
+ */
548
+ goog.ui.ServerChart.UriParam = {
549
+ TYPE: 'cht',
550
+ SIZE: 'chs',
551
+ DATA: 'chd',
552
+ X_LABELS: 'chl',
553
+ LEFT_Y_LABELS: 'chly',
554
+ DATA_LABELS: 'chld',
555
+ RIGHT_LABELS: 'chlr',
556
+ RIGHT_LABEL_POSITIONS: 'chlrp',
557
+ MISC_PARAMS: 'chp',
558
+ DATA_COLORS: 'chco',
559
+ DATA_SCALING: 'chds',
560
+ LEGEND_TEXTS: 'chdl',
561
+ LEGEND_POSITION: 'chdlp',
562
+ LABEL_COLORS: 'chlc',
563
+ BAR_HEIGHT: 'chbh',
564
+ LINE_STYLES: 'chls',
565
+ GRID: 'chg',
566
+ X_AXIS_STYLE: 'chx',
567
+ MARKERS: 'chm',
568
+ BACKGROUND_FILL: 'chf',
569
+ DIGITAL_SIGNATURE: 'sig',
570
+ TITLE: 'chtt',
571
+ TITLE_FORMAT: 'chts',
572
+ LEGEND: 'chdl',
573
+ MULTI_AXIS_TYPES: 'chxt',
574
+ MULTI_AXIS_LABEL_TEXT: 'chxl',
575
+ MULTI_AXIS_LABEL_POSITION: 'chxp',
576
+ MULTI_AXIS_RANGE: 'chxr',
577
+ MULTI_AXIS_STYLE: 'chxs',
578
+ GEOGRAPHICAL_REGION: 'chtm'
579
+ };
580
+
581
+
582
+ /**
583
+ * Sets the background fill.
584
+ *
585
+ * @param {Array.<Object>} fill An array of background fill specification
586
+ * objects. Each object may have the following properties:
587
+ * {string} area The area to fill, either 'bg' for background or 'c' for
588
+ * chart area. The default is 'bg'.
589
+ * {string} color (required) The color of the background fill.
590
+ * // TODO(user): Add support for gradient/stripes, which requires
591
+ * // a different object structure.
592
+ */
593
+ goog.ui.ServerChart.prototype.setBackgroundFill = function(fill) {
594
+ var value = [];
595
+ goog.array.forEach(fill, function(spec) {
596
+ spec.area = spec.area || 'bg';
597
+ spec.effect = spec.effect || 's';
598
+ value.push([spec.area, spec.effect, spec.color].join(','));
599
+ });
600
+ value = value.join('|');
601
+ this.setParameterValue(goog.ui.ServerChart.UriParam.BACKGROUND_FILL, value);
602
+ };
603
+
604
+
605
+ /**
606
+ * Returns the background fill.
607
+ *
608
+ * @return {Array.<Object>} An array of background fill specifications.
609
+ * If the fill specification string is in an unsupported format, the method
610
+ * returns an empty array.
611
+ */
612
+ goog.ui.ServerChart.prototype.getBackgroundFill = function() {
613
+ var value =
614
+ this.uri_.getParameterValue(goog.ui.ServerChart.UriParam.BACKGROUND_FILL);
615
+ var result = [];
616
+ if (goog.isDefAndNotNull(value)) {
617
+ var fillSpecifications = value.split('|');
618
+ var valid = true;
619
+ goog.array.forEach(fillSpecifications, function(spec) {
620
+ spec = spec.split(',');
621
+ if (valid && spec[1] == 's') {
622
+ result.push({area: spec[0], effect: spec[1], color: spec[2]});
623
+ } else {
624
+ // If the format is unsupported, return an empty array.
625
+ result = [];
626
+ valid = false;
627
+ }
628
+ });
629
+ }
630
+ return result;
631
+ };
632
+
633
+
634
+ /**
635
+ * Sets the encoding type.
636
+ *
637
+ * @param {goog.ui.ServerChart.EncodingType} type Desired data encoding type.
638
+ */
639
+ goog.ui.ServerChart.prototype.setEncodingType = function(type) {
640
+ this.encodingType_ = type;
641
+ };
642
+
643
+
644
+ /**
645
+ * Gets the encoding type.
646
+ *
647
+ * @return {goog.ui.ServerChart.EncodingType} The encoding type.
648
+ */
649
+ goog.ui.ServerChart.prototype.getEncodingType = function() {
650
+ return this.encodingType_;
651
+ };
652
+
653
+
654
+ /**
655
+ * Sets the chart type.
656
+ *
657
+ * @param {goog.ui.ServerChart.ChartType} type The desired chart type.
658
+ */
659
+ goog.ui.ServerChart.prototype.setType = function(type) {
660
+ this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.TYPE, type);
661
+ };
662
+
663
+
664
+ /**
665
+ * Returns the chart type.
666
+ *
667
+ * @return {goog.ui.ServerChart.ChartType} The chart type.
668
+ */
669
+ goog.ui.ServerChart.prototype.getType = function() {
670
+ return /** @type {goog.ui.ServerChart.ChartType} */ (
671
+ this.uri_.getParameterValue(goog.ui.ServerChart.UriParam.TYPE));
672
+ };
673
+
674
+
675
+ /**
676
+ * Sets the chart size.
677
+ *
678
+ * @param {number=} opt_width Optional chart width, defaults to 300.
679
+ * @param {number=} opt_height Optional chart height, defaults to 150.
680
+ */
681
+ goog.ui.ServerChart.prototype.setSize = function(opt_width, opt_height) {
682
+ var sizeString = [opt_width || 300, opt_height || 150].join('x');
683
+ this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.SIZE, sizeString);
684
+ };
685
+
686
+
687
+ /**
688
+ * Returns the chart size.
689
+ *
690
+ * @return {Array.<string>} [Width, Height].
691
+ */
692
+ goog.ui.ServerChart.prototype.getSize = function() {
693
+ var sizeStr = this.uri_.getParameterValue(goog.ui.ServerChart.UriParam.SIZE);
694
+ return sizeStr.split('x');
695
+ };
696
+
697
+
698
+ /**
699
+ * Sets the minimum value of the chart.
700
+ *
701
+ * @param {number} minValue The minimum value of the chart.
702
+ */
703
+ goog.ui.ServerChart.prototype.setMinValue = function(minValue) {
704
+ this.minValue_ = minValue;
705
+ };
706
+
707
+
708
+ /**
709
+ * @return {number} The minimum value of the chart.
710
+ */
711
+ goog.ui.ServerChart.prototype.getMinValue = function() {
712
+ return this.minValue_;
713
+ };
714
+
715
+
716
+ /**
717
+ * Sets the maximum value of the chart.
718
+ *
719
+ * @param {number} maxValue The maximum value of the chart.
720
+ */
721
+ goog.ui.ServerChart.prototype.setMaxValue = function(maxValue) {
722
+ this.maxValue_ = maxValue;
723
+ };
724
+
725
+
726
+ /**
727
+ * @return {number} The maximum value of the chart.
728
+ */
729
+ goog.ui.ServerChart.prototype.getMaxValue = function() {
730
+ return this.maxValue_;
731
+ };
732
+
733
+
734
+ /**
735
+ * Sets the number of grid lines along the X-axis.
736
+ *
737
+ * @param {number} gridlines The number of X-axis grid lines.
738
+ */
739
+ goog.ui.ServerChart.prototype.setGridX = function(gridlines) {
740
+ // Need data for this to work.
741
+ this.gridX_ = gridlines;
742
+ this.setGrids_(this.gridX_, this.gridY_);
743
+ };
744
+
745
+
746
+ /**
747
+ * @return {number} The number of gridlines along the X-axis.
748
+ */
749
+ goog.ui.ServerChart.prototype.getGridX = function() {
750
+ return this.gridX_;
751
+ };
752
+
753
+
754
+ /**
755
+ * Sets the number of grid lines along the Y-axis.
756
+ *
757
+ * @param {number} gridlines The number of Y-axis grid lines.
758
+ */
759
+ goog.ui.ServerChart.prototype.setGridY = function(gridlines) {
760
+ // Need data for this to work.
761
+ this.gridY_ = gridlines;
762
+ this.setGrids_(this.gridX_, this.gridY_);
763
+ };
764
+
765
+
766
+ /**
767
+ * @return {number} The number of gridlines along the Y-axis.
768
+ */
769
+ goog.ui.ServerChart.prototype.getGridY = function() {
770
+ return this.gridY_;
771
+ };
772
+
773
+
774
+ /**
775
+ * Sets the grids for the chart
776
+ *
777
+ * @private
778
+ * @param {number} x The number of grid lines along the x-axis.
779
+ * @param {number} y The number of grid lines along the y-axis.
780
+ */
781
+ goog.ui.ServerChart.prototype.setGrids_ = function(x, y) {
782
+ var gridArray = [x == 0 ? 0 : 100 / x,
783
+ y == 0 ? 0 : 100 / y];
784
+ this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.GRID,
785
+ gridArray.join(','));
786
+ };
787
+
788
+
789
+ /**
790
+ * Sets the X Labels for the chart.
791
+ *
792
+ * @param {Array.<string>} labels The X Labels for the chart.
793
+ */
794
+ goog.ui.ServerChart.prototype.setXLabels = function(labels) {
795
+ this.xLabels_ = labels;
796
+ this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.X_LABELS,
797
+ this.xLabels_.join('|'));
798
+ };
799
+
800
+
801
+ /**
802
+ * @return {Array.<string>} The X Labels for the chart.
803
+ */
804
+ goog.ui.ServerChart.prototype.getXLabels = function() {
805
+ return this.xLabels_;
806
+ };
807
+
808
+
809
+ /**
810
+ * @return {boolean} Whether the chart is a bar chart.
811
+ */
812
+ goog.ui.ServerChart.prototype.isBarChart = function() {
813
+ var type = this.getType();
814
+ return type == goog.ui.ServerChart.ChartType.BAR ||
815
+ type == goog.ui.ServerChart.ChartType.HORIZONTAL_GROUPED_BAR ||
816
+ type == goog.ui.ServerChart.ChartType.HORIZONTAL_STACKED_BAR ||
817
+ type == goog.ui.ServerChart.ChartType.VERTICAL_GROUPED_BAR ||
818
+ type == goog.ui.ServerChart.ChartType.VERTICAL_STACKED_BAR;
819
+ };
820
+
821
+
822
+ /**
823
+ * @return {boolean} Whether the chart is a pie chart.
824
+ */
825
+ goog.ui.ServerChart.prototype.isPieChart = function() {
826
+ var type = this.getType();
827
+ return type == goog.ui.ServerChart.ChartType.PIE ||
828
+ type == goog.ui.ServerChart.ChartType.PIE3D ||
829
+ type == goog.ui.ServerChart.ChartType.CONCENTRIC_PIE;
830
+ };
831
+
832
+
833
+ /**
834
+ * @return {boolean} Whether the chart is a grouped bar chart.
835
+ */
836
+ goog.ui.ServerChart.prototype.isGroupedBarChart = function() {
837
+ var type = this.getType();
838
+ return type == goog.ui.ServerChart.ChartType.HORIZONTAL_GROUPED_BAR ||
839
+ type == goog.ui.ServerChart.ChartType.VERTICAL_GROUPED_BAR;
840
+ };
841
+
842
+
843
+ /**
844
+ * @return {boolean} Whether the chart is a horizontal bar chart.
845
+ */
846
+ goog.ui.ServerChart.prototype.isHorizontalBarChart = function() {
847
+ var type = this.getType();
848
+ return type == goog.ui.ServerChart.ChartType.BAR ||
849
+ type == goog.ui.ServerChart.ChartType.HORIZONTAL_GROUPED_BAR ||
850
+ type == goog.ui.ServerChart.ChartType.HORIZONTAL_STACKED_BAR;
851
+ };
852
+
853
+
854
+ /**
855
+ * @return {boolean} Whether the chart is a line chart.
856
+ */
857
+ goog.ui.ServerChart.prototype.isLineChart = function() {
858
+ var type = this.getType();
859
+ return type == goog.ui.ServerChart.ChartType.FILLEDLINE ||
860
+ type == goog.ui.ServerChart.ChartType.LINE ||
861
+ type == goog.ui.ServerChart.ChartType.SPARKLINE ||
862
+ type == goog.ui.ServerChart.ChartType.XYLINE;
863
+ };
864
+
865
+
866
+ /**
867
+ * @return {boolean} Whether the chart is a map.
868
+ */
869
+ goog.ui.ServerChart.prototype.isMap = function() {
870
+ var type = this.getType();
871
+ return type == goog.ui.ServerChart.ChartType.MAP ||
872
+ type == goog.ui.ServerChart.ChartType.MAPUSA ||
873
+ type == goog.ui.ServerChart.ChartType.MAPWORLD;
874
+ };
875
+
876
+
877
+ /**
878
+ * @return {boolean} Whether the chart is a stacked bar chart.
879
+ */
880
+ goog.ui.ServerChart.prototype.isStackedBarChart = function() {
881
+ var type = this.getType();
882
+ return type == goog.ui.ServerChart.ChartType.BAR ||
883
+ type == goog.ui.ServerChart.ChartType.HORIZONTAL_STACKED_BAR ||
884
+ type == goog.ui.ServerChart.ChartType.VERTICAL_STACKED_BAR;
885
+ };
886
+
887
+
888
+ /**
889
+ * @return {boolean} Whether the chart is a vertical bar chart.
890
+ */
891
+ goog.ui.ServerChart.prototype.isVerticalBarChart = function() {
892
+ var type = this.getType();
893
+ return type == goog.ui.ServerChart.ChartType.VERTICAL_GROUPED_BAR ||
894
+ type == goog.ui.ServerChart.ChartType.VERTICAL_STACKED_BAR;
895
+ };
896
+
897
+
898
+ /**
899
+ * Sets the Left Labels for the chart.
900
+ * NOTE: The array should start with the lowest value, and then
901
+ * move progessively up the axis. So if you want labels
902
+ * from 0 to 100 with 0 at bottom of the graph, then you would
903
+ * want to pass something like [0,25,50,75,100].
904
+ *
905
+ * @param {Array.<string>} labels The Left Labels for the chart.
906
+ */
907
+ goog.ui.ServerChart.prototype.setLeftLabels = function(labels) {
908
+ this.leftLabels_ = labels;
909
+ this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.LEFT_Y_LABELS,
910
+ this.leftLabels_.reverse().join('|'));
911
+ };
912
+
913
+
914
+ /**
915
+ * @return {Array.<string>} The Left Labels for the chart.
916
+ */
917
+ goog.ui.ServerChart.prototype.getLeftLabels = function() {
918
+ return this.leftLabels_;
919
+ };
920
+
921
+
922
+ /**
923
+ * Sets the given ChartServer parameter.
924
+ *
925
+ * @param {goog.ui.ServerChart.UriParam} key The ChartServer parameter to set.
926
+ * @param {string} value The value to set for the ChartServer parameter.
927
+ */
928
+ goog.ui.ServerChart.prototype.setParameterValue = function(key, value) {
929
+ this.uri_.setParameterValue(key, value);
930
+ };
931
+
932
+
933
+ /**
934
+ * Removes the given ChartServer parameter.
935
+ *
936
+ * @param {goog.ui.ServerChart.UriParam} key The ChartServer parameter to
937
+ * remove.
938
+ */
939
+ goog.ui.ServerChart.prototype.removeParameter = function(key) {
940
+ this.uri_.removeParameter(key);
941
+ };
942
+
943
+
944
+ /**
945
+ * Sets the Right Labels for the chart.
946
+ * NOTE: The array should start with the lowest value, and then
947
+ * move progessively up the axis. So if you want labels
948
+ * from 0 to 100 with 0 at bottom of the graph, then you would
949
+ * want to pass something like [0,25,50,75,100].
950
+ *
951
+ * @param {Array.<string>} labels The Right Labels for the chart.
952
+ */
953
+ goog.ui.ServerChart.prototype.setRightLabels = function(labels) {
954
+ this.rightLabels_ = labels;
955
+ this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.RIGHT_LABELS,
956
+ this.rightLabels_.reverse().join('|'));
957
+ };
958
+
959
+
960
+ /**
961
+ * @return {Array.<string>} The Right Labels for the chart.
962
+ */
963
+ goog.ui.ServerChart.prototype.getRightLabels = function() {
964
+ return this.rightLabels_;
965
+ };
966
+
967
+
968
+ /**
969
+ * Sets the position relative to the chart where the legend is to be displayed.
970
+ *
971
+ * @param {goog.ui.ServerChart.LegendPosition} value Legend position.
972
+ */
973
+ goog.ui.ServerChart.prototype.setLegendPosition = function(value) {
974
+ this.uri_.setParameterValue(
975
+ goog.ui.ServerChart.UriParam.LEGEND_POSITION, value);
976
+ };
977
+
978
+
979
+ /**
980
+ * Returns the position relative to the chart where the legend is to be
981
+ * displayed.
982
+ *
983
+ * @return {goog.ui.ServerChart.LegendPosition} Legend position.
984
+ */
985
+ goog.ui.ServerChart.prototype.getLegendPosition = function() {
986
+ return /** @type {goog.ui.ServerChart.LegendPosition} */ (
987
+ this.uri_.getParameterValue(
988
+ goog.ui.ServerChart.UriParam.LEGEND_POSITION));
989
+ };
990
+
991
+
992
+ /**
993
+ * Sets the number of "visible" data sets. All data sets that come after
994
+ * the visible data set are not drawn as part of the chart. Instead, they
995
+ * are available for positioning markers.
996
+
997
+ * @param {?number} n The number of visible data sets, or null if all data
998
+ * sets are to be visible.
999
+ */
1000
+ goog.ui.ServerChart.prototype.setNumVisibleDataSets = function(n) {
1001
+ this.numVisibleDataSets_ = n;
1002
+ };
1003
+
1004
+
1005
+ /**
1006
+ * Returns the number of "visible" data sets. All data sets that come after
1007
+ * the visible data set are not drawn as part of the chart. Instead, they
1008
+ * are available for positioning markers.
1009
+ *
1010
+ * @return {?number} The number of visible data sets, or null if all data
1011
+ * sets are visible.
1012
+ */
1013
+ goog.ui.ServerChart.prototype.getNumVisibleDataSets = function() {
1014
+ return this.numVisibleDataSets_;
1015
+ };
1016
+
1017
+
1018
+ /**
1019
+ * Sets the weight function for a Venn Diagram along with the associated
1020
+ * colors and legend text. Weights are assigned as follows:
1021
+ * weights[0] is relative area of circle A.
1022
+ * weights[1] is relative area of circle B.
1023
+ * weights[2] is relative area of circle C.
1024
+ * weights[3] is relative area of overlap of circles A and B.
1025
+ * weights[4] is relative area of overlap of circles A and C.
1026
+ * weights[5] is relative area of overlap of circles B and C.
1027
+ * weights[6] is relative area of overlap of circles A, B and C.
1028
+ * For a two circle Venn Diagram the weights are assigned as follows:
1029
+ * weights[0] is relative area of circle A.
1030
+ * weights[1] is relative area of circle B.
1031
+ * weights[2] is relative area of overlap of circles A and B.
1032
+ *
1033
+ * @param {Array.<number>} weights The relative weights of the circles.
1034
+ * @param {Array.<string>=} opt_legendText The legend labels for the circles.
1035
+ * @param {Array.<string>=} opt_colors The colors for the circles.
1036
+ */
1037
+ goog.ui.ServerChart.prototype.setVennSeries = function(
1038
+ weights, opt_legendText, opt_colors) {
1039
+ if (this.getType() != goog.ui.ServerChart.ChartType.VENN) {
1040
+ throw Error('Can only set a weight function for a Venn diagram.');
1041
+ }
1042
+ var dataMin = this.arrayMin_(weights);
1043
+ if (dataMin < this.minValue_) {
1044
+ this.minValue_ = dataMin;
1045
+ }
1046
+ var dataMax = this.arrayMax_(weights);
1047
+ if (dataMax > this.maxValue_) {
1048
+ this.maxValue_ = dataMax;
1049
+ }
1050
+ if (goog.isDef(opt_legendText)) {
1051
+ goog.array.forEach(
1052
+ opt_legendText,
1053
+ goog.bind(function(legend) {
1054
+ this.setLegendTexts_.push(legend);
1055
+ }, this));
1056
+ this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.LEGEND_TEXTS,
1057
+ this.setLegendTexts_.join('|'));
1058
+ }
1059
+ // If the caller only gave three weights, then they wanted a two circle
1060
+ // Venn Diagram. Create a 3 circle weight function where circle C has
1061
+ // area zero.
1062
+ if (weights.length == 3) {
1063
+ weights[3] = weights[2];
1064
+ weights[2] = 0.0;
1065
+ }
1066
+ this.dataSets_.push(weights);
1067
+ if (goog.isDef(opt_colors)) {
1068
+ goog.array.forEach(opt_colors, goog.bind(function(color) {
1069
+ this.setColors_.push(color);
1070
+ }, this));
1071
+ this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.DATA_COLORS,
1072
+ this.setColors_.join(','));
1073
+ }
1074
+ };
1075
+
1076
+
1077
+ /**
1078
+ * Sets the title of the chart.
1079
+ *
1080
+ * @param {string} title The chart title.
1081
+ */
1082
+ goog.ui.ServerChart.prototype.setTitle = function(title) {
1083
+ this.title_ = title;
1084
+ this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.TITLE,
1085
+ this.title_.replace(/\n/g, '|'));
1086
+ };
1087
+
1088
+
1089
+ /**
1090
+ * Sets the size of the chart title.
1091
+ *
1092
+ * @param {number} size The title size, in points.
1093
+ */
1094
+ goog.ui.ServerChart.prototype.setTitleSize = function(size) {
1095
+ this.titleSize_ = size;
1096
+ this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.TITLE_FORMAT,
1097
+ this.titleColor_ + ',' + this.titleSize_);
1098
+ };
1099
+
1100
+
1101
+ /**
1102
+ * @return {number} size The title size, in points.
1103
+ */
1104
+ goog.ui.ServerChart.prototype.getTitleSize = function() {
1105
+ return this.titleSize_;
1106
+ };
1107
+
1108
+
1109
+ /**
1110
+ * Sets the color of the chart title.
1111
+ *
1112
+ * NOTE: The color string should NOT have a '#' at the beginning of it.
1113
+ *
1114
+ * @param {string} color The hex value for the title color.
1115
+ */
1116
+ goog.ui.ServerChart.prototype.setTitleColor = function(color) {
1117
+ this.titleColor_ = color;
1118
+ this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.TITLE_FORMAT,
1119
+ this.titleColor_ + ',' + this.titleSize_);
1120
+ };
1121
+
1122
+
1123
+ /**
1124
+ * @return {string} color The hex value for the title color.
1125
+ */
1126
+ goog.ui.ServerChart.prototype.getTitleColor = function() {
1127
+ return this.titleColor_;
1128
+ };
1129
+
1130
+
1131
+ /**
1132
+ * Adds a legend to the chart.
1133
+ *
1134
+ * @param {Array.<string>} legend The legend to add.
1135
+ */
1136
+ goog.ui.ServerChart.prototype.setLegend = function(legend) {
1137
+ this.legend_ = legend;
1138
+ this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.LEGEND,
1139
+ this.legend_.join('|'));
1140
+ };
1141
+
1142
+
1143
+ /**
1144
+ * Sets the data scaling.
1145
+ * NOTE: This also changes the encoding type because data scaling will
1146
+ * only work with {@code goog.ui.ServerChart.EncodingType.TEXT}
1147
+ * encoding.
1148
+ * @param {number} minimum The lowest number to apply to the data.
1149
+ * @param {number} maximum The highest number to apply to the data.
1150
+ */
1151
+ goog.ui.ServerChart.prototype.setDataScaling = function(minimum, maximum) {
1152
+ this.encodingType_ = goog.ui.ServerChart.EncodingType.TEXT;
1153
+ this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.DATA_SCALING,
1154
+ minimum + ',' + maximum);
1155
+ };
1156
+
1157
+
1158
+ /**
1159
+ * Sets the widths of the bars and the spaces between the bars in a bar
1160
+ * chart.
1161
+ * NOTE: If the space between groups is specified but the space between
1162
+ * bars is left undefined, the space between groups will be interpreted
1163
+ * as the space between bars because this is the behavior exposed
1164
+ * in the external developers guide.
1165
+ * @param {number} barWidth The width of a bar in pixels.
1166
+ * @param {number=} opt_spaceBars The width of the space between
1167
+ * bars in a group in pixels.
1168
+ * @param {number=} opt_spaceGroups The width of the space between
1169
+ * groups.
1170
+ */
1171
+ goog.ui.ServerChart.prototype.setBarSpaceWidths = function(barWidth,
1172
+ opt_spaceBars,
1173
+ opt_spaceGroups) {
1174
+ var widths = [barWidth];
1175
+ if (goog.isDef(opt_spaceBars)) {
1176
+ widths.push(opt_spaceBars);
1177
+ }
1178
+ if (goog.isDef(opt_spaceGroups)) {
1179
+ widths.push(opt_spaceGroups);
1180
+ }
1181
+ this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.BAR_HEIGHT,
1182
+ widths.join(','));
1183
+ };
1184
+
1185
+
1186
+ /**
1187
+ * Specifies that the bar width in a bar chart should be calculated
1188
+ * automatically given the space available in the chart, while optionally
1189
+ * setting the spaces between the bars.
1190
+ * NOTE: If the space between groups is specified but the space between
1191
+ * bars is left undefined, the space between groups will be interpreted
1192
+ * as the space between bars because this is the behavior exposed
1193
+ * in the external developers guide.
1194
+ * @param {number=} opt_spaceBars The width of the space between
1195
+ * bars in a group in pixels.
1196
+ * @param {number=} opt_spaceGroups The width of the space between
1197
+ * groups.
1198
+ */
1199
+ goog.ui.ServerChart.prototype.setAutomaticBarWidth = function(opt_spaceBars,
1200
+ opt_spaceGroups) {
1201
+ var widths = ['a'];
1202
+ if (goog.isDef(opt_spaceBars)) {
1203
+ widths.push(opt_spaceBars);
1204
+ }
1205
+ if (goog.isDef(opt_spaceGroups)) {
1206
+ widths.push(opt_spaceGroups);
1207
+ }
1208
+ this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.BAR_HEIGHT,
1209
+ widths.join(','));
1210
+ };
1211
+
1212
+
1213
+ /**
1214
+ * Adds a multi-axis to the chart, and sets its type. Multiple axes of the same
1215
+ * type can be added.
1216
+ *
1217
+ * @param {goog.ui.ServerChart.MultiAxisType} axisType The desired axis type.
1218
+ * @return {number} The index of the newly inserted axis, suitable for feeding
1219
+ * to the setMultiAxis*() functions.
1220
+ */
1221
+ goog.ui.ServerChart.prototype.addMultiAxis = function(axisType) {
1222
+ this.multiAxisType_.push(axisType);
1223
+ this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.MULTI_AXIS_TYPES,
1224
+ this.multiAxisType_.join(','));
1225
+ return this.multiAxisType_.length - 1;
1226
+ };
1227
+
1228
+
1229
+ /**
1230
+ * Returns the axis type for the given axis, or all of them in an array if the
1231
+ * axis number is not given.
1232
+ *
1233
+ * @param {number=} opt_axisNumber The axis index, as returned by addMultiAxis.
1234
+ * @return {goog.ui.ServerChart.MultiAxisType|
1235
+ * Array.<goog.ui.ServerChart.MultiAxisType>}
1236
+ * The axis type for the given axis, or all of them in an array if the
1237
+ * axis number is not given.
1238
+ */
1239
+ goog.ui.ServerChart.prototype.getMultiAxisType = function(opt_axisNumber) {
1240
+ if (goog.isDef(opt_axisNumber)) {
1241
+ return this.multiAxisType_[opt_axisNumber];
1242
+ }
1243
+ return this.multiAxisType_;
1244
+ };
1245
+
1246
+
1247
+ /**
1248
+ * Sets the label text (usually multiple values) for a given axis, overwriting
1249
+ * any existing values.
1250
+ *
1251
+ * @param {number} axisNumber The axis index, as returned by addMultiAxis.
1252
+ * @param {Array.<string>} labelText The actual label text to be added.
1253
+ */
1254
+ goog.ui.ServerChart.prototype.setMultiAxisLabelText = function(axisNumber,
1255
+ labelText) {
1256
+ this.multiAxisLabelText_[axisNumber] = labelText;
1257
+
1258
+ var axisString = this.computeMultiAxisDataString_(this.multiAxisLabelText_,
1259
+ ':|',
1260
+ '|',
1261
+ '|');
1262
+ this.uri_.setParameterValue(
1263
+ goog.ui.ServerChart.UriParam.MULTI_AXIS_LABEL_TEXT,
1264
+ axisString);
1265
+ };
1266
+
1267
+
1268
+ /**
1269
+ * Returns the label text, or all of them in a two-dimensional array if the
1270
+ * axis number is not given.
1271
+ *
1272
+ * @param {number=} opt_axisNumber The axis index, as returned by addMultiAxis.
1273
+ * @return {Object|Array.<string>} The label text, or all of them in a
1274
+ * two-dimensional array if the axis number is not given.
1275
+ */
1276
+ goog.ui.ServerChart.prototype.getMultiAxisLabelText = function(opt_axisNumber) {
1277
+ if (goog.isDef(opt_axisNumber)) {
1278
+ return this.multiAxisLabelText_[opt_axisNumber];
1279
+ }
1280
+ return this.multiAxisLabelText_;
1281
+ };
1282
+
1283
+
1284
+ /**
1285
+ * Sets the label positions for a given axis, overwriting any existing values.
1286
+ * The label positions are assumed to be floating-point numbers within the
1287
+ * range of the axis.
1288
+ *
1289
+ * @param {number} axisNumber The axis index, as returned by addMultiAxis.
1290
+ * @param {Array.<number>} labelPosition The actual label positions to be added.
1291
+ */
1292
+ goog.ui.ServerChart.prototype.setMultiAxisLabelPosition = function(
1293
+ axisNumber, labelPosition) {
1294
+ this.multiAxisLabelPosition_[axisNumber] = labelPosition;
1295
+
1296
+ var positionString = this.computeMultiAxisDataString_(
1297
+ this.multiAxisLabelPosition_,
1298
+ ',',
1299
+ ',',
1300
+ '|');
1301
+ this.uri_.setParameterValue(
1302
+ goog.ui.ServerChart.UriParam.MULTI_AXIS_LABEL_POSITION,
1303
+ positionString);
1304
+ };
1305
+
1306
+
1307
+ /**
1308
+ * Returns the label positions for a given axis number, or all of them in a
1309
+ * two-dimensional array if the axis number is not given.
1310
+ *
1311
+ * @param {number=} opt_axisNumber The axis index, as returned by addMultiAxis.
1312
+ * @return {Object|Array.<number>} The label positions for a given axis number,
1313
+ * or all of them in a two-dimensional array if the axis number is not
1314
+ * given.
1315
+ */
1316
+ goog.ui.ServerChart.prototype.getMultiAxisLabelPosition =
1317
+ function(opt_axisNumber) {
1318
+ if (goog.isDef(opt_axisNumber)) {
1319
+ return this.multiAxisLabelPosition_[opt_axisNumber];
1320
+ }
1321
+ return this.multiAxisLabelPosition_;
1322
+ };
1323
+
1324
+
1325
+ /**
1326
+ * Sets the label range for a given axis, overwriting any existing range.
1327
+ * The default range is from 0 to 100. If the start value is larger than the
1328
+ * end value, the axis direction is reversed. rangeStart and rangeEnd must
1329
+ * be two different finite numbers.
1330
+ *
1331
+ * @param {number} axisNumber The axis index, as returned by addMultiAxis.
1332
+ * @param {number} rangeStart The new start of the range.
1333
+ * @param {number} rangeEnd The new end of the range.
1334
+ * @param {number=} opt_interval The interval between axis labels.
1335
+ */
1336
+ goog.ui.ServerChart.prototype.setMultiAxisRange = function(axisNumber,
1337
+ rangeStart,
1338
+ rangeEnd,
1339
+ opt_interval) {
1340
+ goog.asserts.assert(rangeStart != rangeEnd,
1341
+ 'Range start and end cannot be the same value.');
1342
+ goog.asserts.assert(isFinite(rangeStart) && isFinite(rangeEnd),
1343
+ 'Range start and end must be finite numbers.');
1344
+ this.multiAxisRange_[axisNumber] = [rangeStart, rangeEnd];
1345
+ if (goog.isDef(opt_interval)) {
1346
+ this.multiAxisRange_[axisNumber].push(opt_interval);
1347
+ }
1348
+ var rangeString = this.computeMultiAxisDataString_(this.multiAxisRange_,
1349
+ ',', ',', '|');
1350
+ this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.MULTI_AXIS_RANGE,
1351
+ rangeString);
1352
+ };
1353
+
1354
+
1355
+ /**
1356
+ * Returns the label range for a given axis number as a two-element array of
1357
+ * (range start, range end), or all of them in a two-dimensional array if the
1358
+ * axis number is not given.
1359
+ *
1360
+ * @param {number=} opt_axisNumber The axis index, as returned by addMultiAxis.
1361
+ * @return {Object|Array.<number>} The label range for a given axis number as a
1362
+ * two-element array of (range start, range end), or all of them in a
1363
+ * two-dimensional array if the axis number is not given.
1364
+ */
1365
+ goog.ui.ServerChart.prototype.getMultiAxisRange = function(opt_axisNumber) {
1366
+ if (goog.isDef(opt_axisNumber)) {
1367
+ return this.multiAxisRange_[opt_axisNumber];
1368
+ }
1369
+ return this.multiAxisRange_;
1370
+ };
1371
+
1372
+
1373
+ /**
1374
+ * Sets the label style for a given axis, overwriting any existing style.
1375
+ * The default style is as follows: Default is x-axis labels are centered, left
1376
+ * hand y-axis labels are right aligned, right hand y-axis labels are left
1377
+ * aligned. The font size and alignment are optional parameters.
1378
+ *
1379
+ * NOTE: The color string should NOT have a '#' at the beginning of it.
1380
+ *
1381
+ * @param {number} axisNumber The axis index, as returned by addMultiAxis.
1382
+ * @param {string} color The hex value for this label's color.
1383
+ * @param {number=} opt_fontSize The label font size, in pixels.
1384
+ * @param {goog.ui.ServerChart.MultiAxisAlignment=} opt_alignment The label
1385
+ * alignment.
1386
+ * @param {goog.ui.ServerChart.AxisDisplayType=} opt_axisDisplay The axis
1387
+ * line and ticks.
1388
+ */
1389
+ goog.ui.ServerChart.prototype.setMultiAxisLabelStyle = function(axisNumber,
1390
+ color,
1391
+ opt_fontSize,
1392
+ opt_alignment,
1393
+ opt_axisDisplay) {
1394
+ var style = [color];
1395
+ if (goog.isDef(opt_fontSize) || goog.isDef(opt_alignment)) {
1396
+ style.push(opt_fontSize || '');
1397
+ }
1398
+ if (goog.isDef(opt_alignment)) {
1399
+ style.push(opt_alignment);
1400
+ }
1401
+ if (opt_axisDisplay) {
1402
+ style.push(opt_axisDisplay);
1403
+ }
1404
+ this.multiAxisLabelStyle_[axisNumber] = style;
1405
+ var styleString = this.computeMultiAxisDataString_(this.multiAxisLabelStyle_,
1406
+ ',',
1407
+ ',',
1408
+ '|');
1409
+ this.uri_.setParameterValue(
1410
+ goog.ui.ServerChart.UriParam.MULTI_AXIS_STYLE,
1411
+ styleString);
1412
+ };
1413
+
1414
+
1415
+ /**
1416
+ * Returns the label style for a given axis number as a one- to three-element
1417
+ * array, or all of them in a two-dimensional array if the axis number is not
1418
+ * given.
1419
+ *
1420
+ * @param {number=} opt_axisNumber The axis index, as returned by addMultiAxis.
1421
+ * @return {Object|Array.<number>} The label style for a given axis number as a
1422
+ * one- to three-element array, or all of them in a two-dimensional array if
1423
+ * the axis number is not given.
1424
+ */
1425
+ goog.ui.ServerChart.prototype.getMultiAxisLabelStyle =
1426
+ function(opt_axisNumber) {
1427
+ if (goog.isDef(opt_axisNumber)) {
1428
+ return this.multiAxisLabelStyle_[opt_axisNumber];
1429
+ }
1430
+ return this.multiAxisLabelStyle_;
1431
+ };
1432
+
1433
+
1434
+ /**
1435
+ * Adds a data set.
1436
+ * NOTE: The color string should NOT have a '#' at the beginning of it.
1437
+ *
1438
+ * @param {Array.<number|null>} data An array of numbers (values can be
1439
+ * NaN or null).
1440
+ * @param {string} color The hex value for this data set's color.
1441
+ * @param {string=} opt_legendText The legend text, if any, for this data
1442
+ * series. NOTE: If specified, all previously added data sets must also
1443
+ * have a legend text.
1444
+ */
1445
+ goog.ui.ServerChart.prototype.addDataSet = function(data,
1446
+ color,
1447
+ opt_legendText) {
1448
+ var dataMin = this.arrayMin_(data);
1449
+ if (dataMin < this.minValue_) {
1450
+ this.minValue_ = dataMin;
1451
+ }
1452
+
1453
+ var dataMax = this.arrayMax_(data);
1454
+ if (dataMax > this.maxValue_) {
1455
+ this.maxValue_ = dataMax;
1456
+ }
1457
+
1458
+ if (goog.isDef(opt_legendText)) {
1459
+ if (this.setLegendTexts_.length < this.dataSets_.length) {
1460
+ throw Error('Cannot start adding legends text after first element.');
1461
+ }
1462
+ this.setLegendTexts_.push(opt_legendText);
1463
+ this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.LEGEND_TEXTS,
1464
+ this.setLegendTexts_.join('|'));
1465
+ }
1466
+
1467
+ this.dataSets_.push(data);
1468
+ this.setColors_.push(color);
1469
+
1470
+ this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.DATA_COLORS,
1471
+ this.setColors_.join(','));
1472
+ };
1473
+
1474
+
1475
+ /**
1476
+ * Clears the data sets from the graph. All data, including the colors and
1477
+ * legend text, is cleared.
1478
+ */
1479
+ goog.ui.ServerChart.prototype.clearDataSets = function() {
1480
+ var queryData = this.uri_.getQueryData();
1481
+ queryData.remove(goog.ui.ServerChart.UriParam.LEGEND_TEXTS);
1482
+ queryData.remove(goog.ui.ServerChart.UriParam.DATA_COLORS);
1483
+ queryData.remove(goog.ui.ServerChart.UriParam.DATA);
1484
+ this.setLegendTexts_.length = 0;
1485
+ this.setColors_.length = 0;
1486
+ this.dataSets_.length = 0;
1487
+ };
1488
+
1489
+
1490
+ /**
1491
+ * Returns the given data set or all of them in a two-dimensional array if
1492
+ * the set number is not given.
1493
+ *
1494
+ * @param {number=} opt_setNumber Optional data set number to get.
1495
+ * @return {Array} The given data set or all of them in a two-dimensional array
1496
+ * if the set number is not given.
1497
+ */
1498
+ goog.ui.ServerChart.prototype.getData = function(opt_setNumber) {
1499
+ if (goog.isDef(opt_setNumber)) {
1500
+ return this.dataSets_[opt_setNumber];
1501
+ }
1502
+ return this.dataSets_;
1503
+ };
1504
+
1505
+
1506
+ /**
1507
+ * Computes the data string using the data in this.dataSets_ and sets
1508
+ * the object's URI accordingly. If the URI's length equals or exceeds the
1509
+ * limit, goog.ui.ServerChart.UriTooLongEvent is dispatched on the
1510
+ * goog.ui.ServerChart object.
1511
+ * @private
1512
+ */
1513
+ goog.ui.ServerChart.prototype.computeDataString_ = function() {
1514
+ var ok;
1515
+ if (this.encodingType_ != goog.ui.ServerChart.EncodingType.AUTOMATIC) {
1516
+ ok = this.computeDataStringForEncoding_(this.encodingType_);
1517
+ } else {
1518
+ ok = this.computeDataStringForEncoding_(
1519
+ goog.ui.ServerChart.EncodingType.EXTENDED);
1520
+ if (!ok) {
1521
+ ok = this.computeDataStringForEncoding_(
1522
+ goog.ui.ServerChart.EncodingType.SIMPLE);
1523
+ }
1524
+ }
1525
+ if (!ok) {
1526
+ this.dispatchEvent(
1527
+ new goog.ui.ServerChart.UriTooLongEvent(this.uri_.toString()));
1528
+ }
1529
+ };
1530
+
1531
+
1532
+ /**
1533
+ * Computes the data string using the data in this.dataSets_ and the encoding
1534
+ * specified by the encoding parameter, which must not be AUTOMATIC, and sets
1535
+ * the object's URI accordingly.
1536
+ * @param {goog.ui.ServerChart.EncodingType} encoding The data encoding to use;
1537
+ * must not be AUTOMATIC.
1538
+ * @return {boolean} False if the resulting URI is too long.
1539
+ * @private
1540
+ */
1541
+ goog.ui.ServerChart.prototype.computeDataStringForEncoding_ = function(
1542
+ encoding) {
1543
+ var dataStrings = [];
1544
+ for (var i = 0, setLen = this.dataSets_.length; i < setLen; ++i) {
1545
+ dataStrings[i] = this.getChartServerValues_(this.dataSets_[i],
1546
+ this.minValue_,
1547
+ this.maxValue_,
1548
+ encoding);
1549
+ }
1550
+ var delimiter = encoding == goog.ui.ServerChart.EncodingType.TEXT ? '|' : ',';
1551
+ dataStrings = dataStrings.join(delimiter);
1552
+ var data;
1553
+ if (this.numVisibleDataSets_ == null) {
1554
+ data = goog.string.buildString(encoding, ':', dataStrings);
1555
+ } else {
1556
+ data = goog.string.buildString(encoding, this.numVisibleDataSets_, ':',
1557
+ dataStrings);
1558
+ }
1559
+ this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.DATA, data);
1560
+ return this.uri_.toString().length < this.uriLengthLimit_;
1561
+ };
1562
+
1563
+
1564
+ /**
1565
+ * Computes a multi-axis data string from the given data and separators. The
1566
+ * general data format for each index/element in the array will be
1567
+ * "<arrayIndex><indexSeparator><arrayElement.join(elementSeparator)>", with
1568
+ * axisSeparator used between multiple elements.
1569
+ * @param {Object} data The data to compute the data string for, as a
1570
+ * sparse array of arrays. NOTE: The function uses the length of
1571
+ * multiAxisType_ to determine the upper bound for the outer array.
1572
+ * @param {string} indexSeparator The separator string inserted between each
1573
+ * index and the data itself, commonly a comma (,).
1574
+ * @param {string} elementSeparator The separator string inserted between each
1575
+ * element inside each sub-array in the data, if there are more than one;
1576
+ * commonly a comma (,).
1577
+ * @param {string} axisSeparator The separator string inserted between each
1578
+ * axis specification, if there are more than one; usually a pipe sign (|).
1579
+ * @return {string} The multi-axis data string.
1580
+ * @private
1581
+ */
1582
+ goog.ui.ServerChart.prototype.computeMultiAxisDataString_ = function(
1583
+ data,
1584
+ indexSeparator,
1585
+ elementSeparator,
1586
+ axisSeparator) {
1587
+ var elementStrings = [];
1588
+ for (var i = 0, setLen = this.multiAxisType_.length; i < setLen; ++i) {
1589
+ if (data[i]) {
1590
+ elementStrings.push(i + indexSeparator + data[i].join(elementSeparator));
1591
+ }
1592
+ }
1593
+ return elementStrings.join(axisSeparator);
1594
+ };
1595
+
1596
+
1597
+ /**
1598
+ * Array of possible ChartServer data values
1599
+ * @type {string}
1600
+ */
1601
+ goog.ui.ServerChart.CHART_VALUES = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' +
1602
+ 'abcdefghijklmnopqrstuvwxyz' +
1603
+ '0123456789';
1604
+
1605
+
1606
+ /**
1607
+ * Array of extended ChartServer data values
1608
+ * @type {string}
1609
+ */
1610
+ goog.ui.ServerChart.CHART_VALUES_EXTENDED = goog.ui.ServerChart.CHART_VALUES +
1611
+ '-.';
1612
+
1613
+
1614
+ /**
1615
+ * Upper bound for extended values
1616
+ */
1617
+ goog.ui.ServerChart.EXTENDED_UPPER_BOUND =
1618
+ Math.pow(goog.ui.ServerChart.CHART_VALUES_EXTENDED.length, 2) - 1;
1619
+
1620
+
1621
+ /**
1622
+ * Converts a single number to an encoded data value suitable for ChartServer.
1623
+ * The TEXT encoding is the number in decimal; the SIMPLE encoding is a single
1624
+ * character, and the EXTENDED encoding is two characters. See
1625
+ * http://code.google.com/apis/chart/docs/data_formats.html for the detailed
1626
+ * specification of these encoding formats.
1627
+ *
1628
+ * @private
1629
+ * @param {?number} value The value to convert (null for a missing data point).
1630
+ * @param {number} minValue The minimum value (used for normalization).
1631
+ * @param {number} maxValue The maximum value (used for normalization).
1632
+ * @param {goog.ui.ServerChart.EncodingType} encoding The data encoding to use;
1633
+ * must not be AUTOMATIC.
1634
+ * @return {string} The encoded data value.
1635
+ */
1636
+ goog.ui.ServerChart.prototype.getConvertedValue_ = function(value,
1637
+ minValue,
1638
+ maxValue,
1639
+ encoding) {
1640
+ goog.asserts.assert(minValue <= maxValue,
1641
+ 'minValue should be less than or equal to maxValue');
1642
+ var isExtended = (encoding == goog.ui.ServerChart.EncodingType.EXTENDED);
1643
+
1644
+ if (goog.isNull(value) || !goog.isDef(value) || isNaN(value) ||
1645
+ value < minValue || value > maxValue) {
1646
+ return isExtended ? '__' : '_';
1647
+ }
1648
+
1649
+ if (encoding == goog.ui.ServerChart.EncodingType.TEXT) {
1650
+ return String(value);
1651
+ }
1652
+
1653
+ var frac = goog.ui.ServerChart.DEFAULT_NORMALIZATION;
1654
+ if (maxValue > minValue) {
1655
+ frac = (value - minValue) / (maxValue - minValue);
1656
+ // Previous checks of value ensure that 0 <= frac <= 1 at this point.
1657
+ }
1658
+
1659
+ if (isExtended) {
1660
+ var maxIndex = goog.ui.ServerChart.CHART_VALUES_EXTENDED.length;
1661
+ var upperBound = goog.ui.ServerChart.EXTENDED_UPPER_BOUND;
1662
+ var index1 = Math.floor(frac * upperBound / maxIndex);
1663
+ var index2 = Math.floor((frac * upperBound) % maxIndex);
1664
+ var extendedVals = goog.ui.ServerChart.CHART_VALUES_EXTENDED;
1665
+ return extendedVals.charAt(index1) + extendedVals.charAt(index2);
1666
+ }
1667
+
1668
+ var index = Math.round(frac * (goog.ui.ServerChart.CHART_VALUES.length - 1));
1669
+ return goog.ui.ServerChart.CHART_VALUES.charAt(index);
1670
+ };
1671
+
1672
+
1673
+ /**
1674
+ * Creates the chd string for chartserver.
1675
+ *
1676
+ * @private
1677
+ * @param {Array.<number>} values An array of numbers to graph.
1678
+ * @param {number} minValue The minimum value (used for normalization).
1679
+ * @param {number} maxValue The maximum value (used for normalization).
1680
+ * @param {goog.ui.ServerChart.EncodingType} encoding The data encoding to use;
1681
+ * must not be AUTOMATIC.
1682
+ * @return {string} The chd string for chartserver.
1683
+ */
1684
+ goog.ui.ServerChart.prototype.getChartServerValues_ = function(values,
1685
+ minValue,
1686
+ maxValue,
1687
+ encoding) {
1688
+ var s = [];
1689
+ for (var i = 0, valuesLen = values.length; i < valuesLen; ++i) {
1690
+ s.push(this.getConvertedValue_(values[i], minValue,
1691
+ maxValue, encoding));
1692
+ }
1693
+ return s.join(
1694
+ this.encodingType_ == goog.ui.ServerChart.EncodingType.TEXT ? ',' : '');
1695
+ };
1696
+
1697
+
1698
+ /**
1699
+ * Finds the minimum value in an array and returns it.
1700
+ * Needed because Math.min does not handle sparse arrays the way we want.
1701
+ *
1702
+ * @param {Array.<number?>} ary An array of values.
1703
+ * @return {number} The minimum value.
1704
+ * @private
1705
+ */
1706
+ goog.ui.ServerChart.prototype.arrayMin_ = function(ary) {
1707
+ var min = Infinity;
1708
+ for (var i = 0, aryLen = ary.length; i < aryLen; ++i) {
1709
+ var value = ary[i];
1710
+ if (value != null && value < min) {
1711
+ min = value;
1712
+ }
1713
+ }
1714
+ return min;
1715
+ };
1716
+
1717
+
1718
+ /**
1719
+ * Finds the maximum value in an array and returns it.
1720
+ * Needed because Math.max does not handle sparse arrays the way we want.
1721
+ *
1722
+ * @param {Array.<number?>} ary An array of values.
1723
+ * @return {number} The maximum value.
1724
+ * @private
1725
+ */
1726
+ goog.ui.ServerChart.prototype.arrayMax_ = function(ary) {
1727
+ var max = -Infinity;
1728
+ for (var i = 0, aryLen = ary.length; i < aryLen; ++i) {
1729
+ var value = ary[i];
1730
+ if (value != null && value > max) {
1731
+ max = value;
1732
+ }
1733
+ }
1734
+ return max;
1735
+ };
1736
+
1737
+
1738
+ /** @inheritDoc */
1739
+ goog.ui.ServerChart.prototype.disposeInternal = function() {
1740
+ goog.ui.ServerChart.superClass_.disposeInternal.call(this);
1741
+ delete this.xLabels_;
1742
+ delete this.leftLabels_;
1743
+ delete this.rightLabels_;
1744
+ delete this.gridX_;
1745
+ delete this.gridY_;
1746
+ delete this.setColors_;
1747
+ delete this.setLegendTexts_;
1748
+ delete this.dataSets_;
1749
+ this.uri_ = null;
1750
+ delete this.minValue_;
1751
+ delete this.maxValue_;
1752
+ this.title_ = null;
1753
+ delete this.multiAxisType_;
1754
+ delete this.multiAxisLabelText_;
1755
+ delete this.multiAxisLabelPosition_;
1756
+ delete this.multiAxisRange_;
1757
+ delete this.multiAxisLabelStyle_;
1758
+ this.legend_ = null;
1759
+ };
1760
+
1761
+
1762
+ /**
1763
+ * Event types dispatched by the ServerChart object
1764
+ * @enum {string}
1765
+ */
1766
+ goog.ui.ServerChart.Event = {
1767
+ /**
1768
+ * Dispatched when the resulting URI reaches or exceeds the URI length limit.
1769
+ */
1770
+ URI_TOO_LONG: 'uritoolong'
1771
+ };
1772
+
1773
+
1774
+
1775
+ /**
1776
+ * Class for the event dispatched on the ServerChart when the resulting URI
1777
+ * exceeds the URI length limit.
1778
+ * @constructor
1779
+ * @param {string} uri The overly-long URI string.
1780
+ * @extends {goog.events.Event}
1781
+ */
1782
+ goog.ui.ServerChart.UriTooLongEvent = function(uri) {
1783
+ goog.events.Event.call(this, goog.ui.ServerChart.Event.URI_TOO_LONG);
1784
+
1785
+ /**
1786
+ * The overly-long URI string.
1787
+ * @type {string}
1788
+ */
1789
+ this.uri = uri;
1790
+ };
1791
+ goog.inherits(goog.ui.ServerChart.UriTooLongEvent, goog.events.Event);