picky-statistics 4.0.0pre3 → 4.0.0pre5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (596) hide show
  1. data/lib/picky-statistics/application/javascripts/d3/LICENSE +26 -0
  2. data/lib/picky-statistics/application/javascripts/d3/Makefile +268 -0
  3. data/lib/picky-statistics/application/javascripts/d3/README.md +51 -0
  4. data/lib/picky-statistics/application/javascripts/d3/d3.chart.js +984 -0
  5. data/lib/picky-statistics/application/javascripts/d3/d3.chart.min.js +1 -0
  6. data/lib/picky-statistics/application/javascripts/d3/d3.csv.js +92 -0
  7. data/lib/picky-statistics/application/javascripts/d3/d3.csv.min.js +1 -0
  8. data/lib/picky-statistics/application/javascripts/d3/d3.geo.js +938 -0
  9. data/lib/picky-statistics/application/javascripts/d3/d3.geo.min.js +1 -0
  10. data/lib/picky-statistics/application/javascripts/d3/d3.geom.js +835 -0
  11. data/lib/picky-statistics/application/javascripts/d3/d3.geom.min.js +1 -0
  12. data/lib/picky-statistics/application/javascripts/d3/d3.js +4690 -0
  13. data/lib/picky-statistics/application/javascripts/d3/d3.layout.js +1891 -0
  14. data/lib/picky-statistics/application/javascripts/d3/d3.layout.min.js +1 -0
  15. data/lib/picky-statistics/application/javascripts/d3/d3.min.js +2 -0
  16. data/lib/picky-statistics/application/javascripts/d3/d3.time.js +687 -0
  17. data/lib/picky-statistics/application/javascripts/d3/d3.time.min.js +1 -0
  18. data/lib/picky-statistics/application/javascripts/d3/examples/albers/albers.html +168 -0
  19. data/lib/picky-statistics/application/javascripts/d3/examples/area/area-radial.html +48 -0
  20. data/lib/picky-statistics/application/javascripts/d3/examples/area/area.html +113 -0
  21. data/lib/picky-statistics/application/javascripts/d3/examples/axis/axis-alternating.html +50 -0
  22. data/lib/picky-statistics/application/javascripts/d3/examples/axis/axis-ggplot2.html +68 -0
  23. data/lib/picky-statistics/application/javascripts/d3/examples/axis/axis-multiples.html +117 -0
  24. data/lib/picky-statistics/application/javascripts/d3/examples/axis/axis-orientations.html +63 -0
  25. data/lib/picky-statistics/application/javascripts/d3/examples/axis/axis-transition.html +153 -0
  26. data/lib/picky-statistics/application/javascripts/d3/examples/azimuthal/azimuthal.css +21 -0
  27. data/lib/picky-statistics/application/javascripts/d3/examples/azimuthal/azimuthal.html +99 -0
  28. data/lib/picky-statistics/application/javascripts/d3/examples/azimuthal/azimuthal.js +29 -0
  29. data/lib/picky-statistics/application/javascripts/d3/examples/bar/bar-hierarchy.html +223 -0
  30. data/lib/picky-statistics/application/javascripts/d3/examples/bar/bar.html +101 -0
  31. data/lib/picky-statistics/application/javascripts/d3/examples/bar/sample-data.csv +53 -0
  32. data/lib/picky-statistics/application/javascripts/d3/examples/bonne/bonne.html +159 -0
  33. data/lib/picky-statistics/application/javascripts/d3/examples/box/box.css +4 -0
  34. data/lib/picky-statistics/application/javascripts/d3/examples/box/box.html +19 -0
  35. data/lib/picky-statistics/application/javascripts/d3/examples/box/box.js +68 -0
  36. data/lib/picky-statistics/application/javascripts/d3/examples/brush/brush-ordinal.html +92 -0
  37. data/lib/picky-statistics/application/javascripts/d3/examples/brush/brush-x.html +92 -0
  38. data/lib/picky-statistics/application/javascripts/d3/examples/brush/brush-y.html +91 -0
  39. data/lib/picky-statistics/application/javascripts/d3/examples/brush/brush.html +98 -0
  40. data/lib/picky-statistics/application/javascripts/d3/examples/bubble/bubble.css +8 -0
  41. data/lib/picky-statistics/application/javascripts/d3/examples/bubble/bubble.html +14 -0
  42. data/lib/picky-statistics/application/javascripts/d3/examples/bubble/bubble.js +46 -0
  43. data/lib/picky-statistics/application/javascripts/d3/examples/bullet/bullet.css +10 -0
  44. data/lib/picky-statistics/application/javascripts/d3/examples/bullet/bullet.html +18 -0
  45. data/lib/picky-statistics/application/javascripts/d3/examples/bullet/bullet.js +53 -0
  46. data/lib/picky-statistics/application/javascripts/d3/examples/bullet/bullets.json +7 -0
  47. data/lib/picky-statistics/application/javascripts/d3/examples/bundle/bundle-radial.css +9 -0
  48. data/lib/picky-statistics/application/javascripts/d3/examples/bundle/bundle-radial.html +15 -0
  49. data/lib/picky-statistics/application/javascripts/d3/examples/bundle/bundle-radial.js +50 -0
  50. data/lib/picky-statistics/application/javascripts/d3/examples/bundle/bundle-treemap.css +14 -0
  51. data/lib/picky-statistics/application/javascripts/d3/examples/bundle/bundle-treemap.html +16 -0
  52. data/lib/picky-statistics/application/javascripts/d3/examples/bundle/bundle-treemap.js +53 -0
  53. data/lib/picky-statistics/application/javascripts/d3/examples/bundle/packages.js +49 -0
  54. data/lib/picky-statistics/application/javascripts/d3/examples/button.css +35 -0
  55. data/lib/picky-statistics/application/javascripts/d3/examples/calendar/calendar.css +15 -0
  56. data/lib/picky-statistics/application/javascripts/d3/examples/calendar/dji-area.html +120 -0
  57. data/lib/picky-statistics/application/javascripts/d3/examples/calendar/dji.csv +5233 -0
  58. data/lib/picky-statistics/application/javascripts/d3/examples/calendar/dji.html +15 -0
  59. data/lib/picky-statistics/application/javascripts/d3/examples/calendar/dji.js +65 -0
  60. data/lib/picky-statistics/application/javascripts/d3/examples/calendar/vix.csv +5231 -0
  61. data/lib/picky-statistics/application/javascripts/d3/examples/calendar/vix.html +15 -0
  62. data/lib/picky-statistics/application/javascripts/d3/examples/calendar/vix.js +65 -0
  63. data/lib/picky-statistics/application/javascripts/d3/examples/cartogram/cartogram.css +20 -0
  64. data/lib/picky-statistics/application/javascripts/d3/examples/cartogram/cartogram.html +15 -0
  65. data/lib/picky-statistics/application/javascripts/d3/examples/cartogram/cartogram.js +51 -0
  66. data/lib/picky-statistics/application/javascripts/d3/examples/cartogram/demers.css +9 -0
  67. data/lib/picky-statistics/application/javascripts/d3/examples/cartogram/demers.html +16 -0
  68. data/lib/picky-statistics/application/javascripts/d3/examples/cartogram/demers.js +79 -0
  69. data/lib/picky-statistics/application/javascripts/d3/examples/cartogram/dorling.css +9 -0
  70. data/lib/picky-statistics/application/javascripts/d3/examples/cartogram/dorling.html +16 -0
  71. data/lib/picky-statistics/application/javascripts/d3/examples/cartogram/dorling.js +80 -0
  72. data/lib/picky-statistics/application/javascripts/d3/examples/chord/chord-flare.html +109 -0
  73. data/lib/picky-statistics/application/javascripts/d3/examples/chord/chord.css +9 -0
  74. data/lib/picky-statistics/application/javascripts/d3/examples/chord/chord.html +14 -0
  75. data/lib/picky-statistics/application/javascripts/d3/examples/chord/chord.js +98 -0
  76. data/lib/picky-statistics/application/javascripts/d3/examples/choropleth/choropleth-area.html +51 -0
  77. data/lib/picky-statistics/application/javascripts/d3/examples/choropleth/choropleth-bounds.html +46 -0
  78. data/lib/picky-statistics/application/javascripts/d3/examples/choropleth/choropleth.css +16 -0
  79. data/lib/picky-statistics/application/javascripts/d3/examples/choropleth/choropleth.html +15 -0
  80. data/lib/picky-statistics/application/javascripts/d3/examples/choropleth/choropleth.js +38 -0
  81. data/lib/picky-statistics/application/javascripts/d3/examples/choropleth/unemployment.json +1 -0
  82. data/lib/picky-statistics/application/javascripts/d3/examples/clock/clock.css +23 -0
  83. data/lib/picky-statistics/application/javascripts/d3/examples/clock/clock.html +17 -0
  84. data/lib/picky-statistics/application/javascripts/d3/examples/clock/clock.js +87 -0
  85. data/lib/picky-statistics/application/javascripts/d3/examples/cluster/cluster-radial.html +14 -0
  86. data/lib/picky-statistics/application/javascripts/d3/examples/cluster/cluster-radial.js +39 -0
  87. data/lib/picky-statistics/application/javascripts/d3/examples/cluster/cluster.css +15 -0
  88. data/lib/picky-statistics/application/javascripts/d3/examples/cluster/cluster.html +14 -0
  89. data/lib/picky-statistics/application/javascripts/d3/examples/cluster/cluster.js +39 -0
  90. data/lib/picky-statistics/application/javascripts/d3/examples/contour/contour.html +108 -0
  91. data/lib/picky-statistics/application/javascripts/d3/examples/crimea/crimea-stacked-area.html +109 -0
  92. data/lib/picky-statistics/application/javascripts/d3/examples/crimea/crimea-stacked-bar.html +98 -0
  93. data/lib/picky-statistics/application/javascripts/d3/examples/crimea/crimea.csv +24 -0
  94. data/lib/picky-statistics/application/javascripts/d3/examples/custom/custom.html +83 -0
  95. data/lib/picky-statistics/application/javascripts/d3/examples/data/README.md +13 -0
  96. data/lib/picky-statistics/application/javascripts/d3/examples/data/faithful.json +8 -0
  97. data/lib/picky-statistics/application/javascripts/d3/examples/data/flare-imports.json +222 -0
  98. data/lib/picky-statistics/application/javascripts/d3/examples/data/flare.json +380 -0
  99. data/lib/picky-statistics/application/javascripts/d3/examples/data/morley.csv +101 -0
  100. data/lib/picky-statistics/application/javascripts/d3/examples/data/sample.csv +2 -0
  101. data/lib/picky-statistics/application/javascripts/d3/examples/data/sample.html +5 -0
  102. data/lib/picky-statistics/application/javascripts/d3/examples/data/sample.json +1 -0
  103. data/lib/picky-statistics/application/javascripts/d3/examples/data/sample.txt +1 -0
  104. data/lib/picky-statistics/application/javascripts/d3/examples/data/sample.xml +4 -0
  105. data/lib/picky-statistics/application/javascripts/d3/examples/data/stocks.csv +807 -0
  106. data/lib/picky-statistics/application/javascripts/d3/examples/data/unemployment.csv +1709 -0
  107. data/lib/picky-statistics/application/javascripts/d3/examples/data/us-borders.json +1 -0
  108. data/lib/picky-statistics/application/javascripts/d3/examples/data/us-counties.json +3216 -0
  109. data/lib/picky-statistics/application/javascripts/d3/examples/data/us-state-centroids.json +54 -0
  110. data/lib/picky-statistics/application/javascripts/d3/examples/data/us-states.json +54 -0
  111. data/lib/picky-statistics/application/javascripts/d3/examples/data/world-countries.json +179 -0
  112. data/lib/picky-statistics/application/javascripts/d3/examples/delaunay/delaunay.html +44 -0
  113. data/lib/picky-statistics/application/javascripts/d3/examples/donut/donut.html +124 -0
  114. data/lib/picky-statistics/application/javascripts/d3/examples/dot/dot.html +103 -0
  115. data/lib/picky-statistics/application/javascripts/d3/examples/drag/drag.html +44 -0
  116. data/lib/picky-statistics/application/javascripts/d3/examples/force/README +10 -0
  117. data/lib/picky-statistics/application/javascripts/d3/examples/force/force-bounds.html +70 -0
  118. data/lib/picky-statistics/application/javascripts/d3/examples/force/force-cluster.html +249 -0
  119. data/lib/picky-statistics/application/javascripts/d3/examples/force/force-collapsible.html +144 -0
  120. data/lib/picky-statistics/application/javascripts/d3/examples/force/force-dynamic.html +118 -0
  121. data/lib/picky-statistics/application/javascripts/d3/examples/force/force-map.html +104 -0
  122. data/lib/picky-statistics/application/javascripts/d3/examples/force/force-multi-foci.html +68 -0
  123. data/lib/picky-statistics/application/javascripts/d3/examples/force/force.css +9 -0
  124. data/lib/picky-statistics/application/javascripts/d3/examples/force/force.html +14 -0
  125. data/lib/picky-statistics/application/javascripts/d3/examples/force/force.js +50 -0
  126. data/lib/picky-statistics/application/javascripts/d3/examples/force/miserables.json +1 -0
  127. data/lib/picky-statistics/application/javascripts/d3/examples/great-arc/great-arc.html +78 -0
  128. data/lib/picky-statistics/application/javascripts/d3/examples/hello-world/hello-data-key.html +60 -0
  129. data/lib/picky-statistics/application/javascripts/d3/examples/hello-world/hello-data-nested-key.html +75 -0
  130. data/lib/picky-statistics/application/javascripts/d3/examples/hello-world/hello-data-nested.html +77 -0
  131. data/lib/picky-statistics/application/javascripts/d3/examples/hello-world/hello-data.html +46 -0
  132. data/lib/picky-statistics/application/javascripts/d3/examples/hello-world/hello-event.html +53 -0
  133. data/lib/picky-statistics/application/javascripts/d3/examples/hello-world/hello-node-key.html +25 -0
  134. data/lib/picky-statistics/application/javascripts/d3/examples/hello-world/hello-order.html +25 -0
  135. data/lib/picky-statistics/application/javascripts/d3/examples/hello-world/hello-sort.html +75 -0
  136. data/lib/picky-statistics/application/javascripts/d3/examples/hello-world/hello-transform.html +41 -0
  137. data/lib/picky-statistics/application/javascripts/d3/examples/hello-world/hello-transition-undefined.html +43 -0
  138. data/lib/picky-statistics/application/javascripts/d3/examples/hello-world/hello-transition.html +47 -0
  139. data/lib/picky-statistics/application/javascripts/d3/examples/hello-world/hello-webkit-transition.html +64 -0
  140. data/lib/picky-statistics/application/javascripts/d3/examples/hello-world/select-enter-add.html +29 -0
  141. data/lib/picky-statistics/application/javascripts/d3/examples/hello-world/selectAll-enter-add.html +20 -0
  142. data/lib/picky-statistics/application/javascripts/d3/examples/histogram/histogram.html +80 -0
  143. data/lib/picky-statistics/application/javascripts/d3/examples/horizon/horizon.css +9 -0
  144. data/lib/picky-statistics/application/javascripts/d3/examples/horizon/horizon.html +25 -0
  145. data/lib/picky-statistics/application/javascripts/d3/examples/horizon/horizon.js +43 -0
  146. data/lib/picky-statistics/application/javascripts/d3/examples/horizon/unemployment.json +1 -0
  147. data/lib/picky-statistics/application/javascripts/d3/examples/hull/hull.html +75 -0
  148. data/lib/picky-statistics/application/javascripts/d3/examples/kde/kde.css +9 -0
  149. data/lib/picky-statistics/application/javascripts/d3/examples/kde/kde.html +14 -0
  150. data/lib/picky-statistics/application/javascripts/d3/examples/kde/kde.js +40 -0
  151. data/lib/picky-statistics/application/javascripts/d3/examples/line/line.css +22 -0
  152. data/lib/picky-statistics/application/javascripts/d3/examples/line/line.html +11 -0
  153. data/lib/picky-statistics/application/javascripts/d3/examples/line/line.js +63 -0
  154. data/lib/picky-statistics/application/javascripts/d3/examples/marimekko/marimekko.html +116 -0
  155. data/lib/picky-statistics/application/javascripts/d3/examples/marimekko/marimekko.json +18 -0
  156. data/lib/picky-statistics/application/javascripts/d3/examples/marker/marker.html +169 -0
  157. data/lib/picky-statistics/application/javascripts/d3/examples/mercator/mercator.html +133 -0
  158. data/lib/picky-statistics/application/javascripts/d3/examples/moire/moire.html +53 -0
  159. data/lib/picky-statistics/application/javascripts/d3/examples/node-canvas/us-counties.js +70 -0
  160. data/lib/picky-statistics/application/javascripts/d3/examples/pack/pack.css +15 -0
  161. data/lib/picky-statistics/application/javascripts/d3/examples/pack/pack.html +14 -0
  162. data/lib/picky-statistics/application/javascripts/d3/examples/pack/pack.js +33 -0
  163. data/lib/picky-statistics/application/javascripts/d3/examples/parallel/cars.csv +407 -0
  164. data/lib/picky-statistics/application/javascripts/d3/examples/parallel/parallel.html +134 -0
  165. data/lib/picky-statistics/application/javascripts/d3/examples/partition/partition-icicle-zoom.html +59 -0
  166. data/lib/picky-statistics/application/javascripts/d3/examples/partition/partition-icicle.html +45 -0
  167. data/lib/picky-statistics/application/javascripts/d3/examples/partition/partition-sunburst-zoom.html +72 -0
  168. data/lib/picky-statistics/application/javascripts/d3/examples/partition/partition-sunburst.html +21 -0
  169. data/lib/picky-statistics/application/javascripts/d3/examples/partition/partition-sunburst.js +72 -0
  170. data/lib/picky-statistics/application/javascripts/d3/examples/pie/pie-transition.html +69 -0
  171. data/lib/picky-statistics/application/javascripts/d3/examples/pie/pie.html +51 -0
  172. data/lib/picky-statistics/application/javascripts/d3/examples/population/population.css +28 -0
  173. data/lib/picky-statistics/application/javascripts/d3/examples/population/population.csv +571 -0
  174. data/lib/picky-statistics/application/javascripts/d3/examples/population/population.html +13 -0
  175. data/lib/picky-statistics/application/javascripts/d3/examples/population/population.js +126 -0
  176. data/lib/picky-statistics/application/javascripts/d3/examples/qq/qq.css +18 -0
  177. data/lib/picky-statistics/application/javascripts/d3/examples/qq/qq.html +21 -0
  178. data/lib/picky-statistics/application/javascripts/d3/examples/qq/qq.js +66 -0
  179. data/lib/picky-statistics/application/javascripts/d3/examples/qq/stats.js +28 -0
  180. data/lib/picky-statistics/application/javascripts/d3/examples/qq/turkers.json +1 -0
  181. data/lib/picky-statistics/application/javascripts/d3/examples/quadtree/quadtree.html +114 -0
  182. data/lib/picky-statistics/application/javascripts/d3/examples/showreel/showreel.html +661 -0
  183. data/lib/picky-statistics/application/javascripts/d3/examples/sizzle/sizzle.html +27 -0
  184. data/lib/picky-statistics/application/javascripts/d3/examples/sort/sort.css +4 -0
  185. data/lib/picky-statistics/application/javascripts/d3/examples/sort/sort.html +12 -0
  186. data/lib/picky-statistics/application/javascripts/d3/examples/sort/sort.js +112 -0
  187. data/lib/picky-statistics/application/javascripts/d3/examples/spline/spline.css +30 -0
  188. data/lib/picky-statistics/application/javascripts/d3/examples/spline/spline.html +14 -0
  189. data/lib/picky-statistics/application/javascripts/d3/examples/spline/spline.js +113 -0
  190. data/lib/picky-statistics/application/javascripts/d3/examples/splom/flowers.json +1 -0
  191. data/lib/picky-statistics/application/javascripts/d3/examples/splom/splom.css +49 -0
  192. data/lib/picky-statistics/application/javascripts/d3/examples/splom/splom.html +13 -0
  193. data/lib/picky-statistics/application/javascripts/d3/examples/splom/splom.js +119 -0
  194. data/lib/picky-statistics/application/javascripts/d3/examples/stream/stack.css +7 -0
  195. data/lib/picky-statistics/application/javascripts/d3/examples/stream/stack.html +22 -0
  196. data/lib/picky-statistics/application/javascripts/d3/examples/stream/stack.js +119 -0
  197. data/lib/picky-statistics/application/javascripts/d3/examples/stream/stream.css +3 -0
  198. data/lib/picky-statistics/application/javascripts/d3/examples/stream/stream.html +19 -0
  199. data/lib/picky-statistics/application/javascripts/d3/examples/stream/stream.js +42 -0
  200. data/lib/picky-statistics/application/javascripts/d3/examples/stream/stream_layers.js +33 -0
  201. data/lib/picky-statistics/application/javascripts/d3/examples/superformula/dot.html +104 -0
  202. data/lib/picky-statistics/application/javascripts/d3/examples/superformula/explorer.html +120 -0
  203. data/lib/picky-statistics/application/javascripts/d3/examples/superformula/superformula.html +70 -0
  204. data/lib/picky-statistics/application/javascripts/d3/examples/superformula/superformula.js +98 -0
  205. data/lib/picky-statistics/application/javascripts/d3/examples/symbol-map/symbol-map.html +67 -0
  206. data/lib/picky-statistics/application/javascripts/d3/examples/touch/touch.html +65 -0
  207. data/lib/picky-statistics/application/javascripts/d3/examples/transform/test.html +85 -0
  208. data/lib/picky-statistics/application/javascripts/d3/examples/transform/transform.html +60 -0
  209. data/lib/picky-statistics/application/javascripts/d3/examples/tree/tree-dynamic.html +111 -0
  210. data/lib/picky-statistics/application/javascripts/d3/examples/tree/tree-interactive.html +172 -0
  211. data/lib/picky-statistics/application/javascripts/d3/examples/tree/tree-radial.html +14 -0
  212. data/lib/picky-statistics/application/javascripts/d3/examples/tree/tree-radial.js +40 -0
  213. data/lib/picky-statistics/application/javascripts/d3/examples/tree/tree.css +15 -0
  214. data/lib/picky-statistics/application/javascripts/d3/examples/tree/tree.html +14 -0
  215. data/lib/picky-statistics/application/javascripts/d3/examples/tree/tree.js +39 -0
  216. data/lib/picky-statistics/application/javascripts/d3/examples/treemap/treemap-svg.html +22 -0
  217. data/lib/picky-statistics/application/javascripts/d3/examples/treemap/treemap-svg.js +34 -0
  218. data/lib/picky-statistics/application/javascripts/d3/examples/treemap/treemap.css +8 -0
  219. data/lib/picky-statistics/application/javascripts/d3/examples/treemap/treemap.html +22 -0
  220. data/lib/picky-statistics/application/javascripts/d3/examples/treemap/treemap.js +53 -0
  221. data/lib/picky-statistics/application/javascripts/d3/examples/voroboids/boid.js +235 -0
  222. data/lib/picky-statistics/application/javascripts/d3/examples/voroboids/voroboids.css +15 -0
  223. data/lib/picky-statistics/application/javascripts/d3/examples/voroboids/voroboids.html +14 -0
  224. data/lib/picky-statistics/application/javascripts/d3/examples/voroboids/voroboids.js +65 -0
  225. data/lib/picky-statistics/application/javascripts/d3/examples/voronoi/voronoi.css +16 -0
  226. data/lib/picky-statistics/application/javascripts/d3/examples/voronoi/voronoi.html +15 -0
  227. data/lib/picky-statistics/application/javascripts/d3/examples/voronoi/voronoi.js +34 -0
  228. data/lib/picky-statistics/application/javascripts/d3/examples/zoom-pan/zoom-pan-transform.html +96 -0
  229. data/lib/picky-statistics/application/javascripts/d3/examples/zoom-pan/zoom-pan.html +120 -0
  230. data/lib/picky-statistics/application/javascripts/d3/examples/zoom/dji.csv +5233 -0
  231. data/lib/picky-statistics/application/javascripts/d3/examples/zoom/zoom.html +162 -0
  232. data/lib/picky-statistics/application/javascripts/d3/lib/colorbrewer/LICENSE +38 -0
  233. data/lib/picky-statistics/application/javascripts/d3/lib/colorbrewer/colorbrewer.css +1327 -0
  234. data/lib/picky-statistics/application/javascripts/d3/lib/colorbrewer/colorbrewer.js +32 -0
  235. data/lib/picky-statistics/application/javascripts/d3/lib/jit/LICENSE +27 -0
  236. data/lib/picky-statistics/application/javascripts/d3/lib/jquery-ui/LICENSE +25 -0
  237. data/lib/picky-statistics/application/javascripts/d3/lib/jquery-ui/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  238. data/lib/picky-statistics/application/javascripts/d3/lib/jquery-ui/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  239. data/lib/picky-statistics/application/javascripts/d3/lib/jquery-ui/images/ui-bg_flat_10_000000_40x100.png +0 -0
  240. data/lib/picky-statistics/application/javascripts/d3/lib/jquery-ui/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  241. data/lib/picky-statistics/application/javascripts/d3/lib/jquery-ui/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  242. data/lib/picky-statistics/application/javascripts/d3/lib/jquery-ui/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  243. data/lib/picky-statistics/application/javascripts/d3/lib/jquery-ui/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  244. data/lib/picky-statistics/application/javascripts/d3/lib/jquery-ui/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  245. data/lib/picky-statistics/application/javascripts/d3/lib/jquery-ui/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  246. data/lib/picky-statistics/application/javascripts/d3/lib/jquery-ui/images/ui-icons_222222_256x240.png +0 -0
  247. data/lib/picky-statistics/application/javascripts/d3/lib/jquery-ui/images/ui-icons_228ef1_256x240.png +0 -0
  248. data/lib/picky-statistics/application/javascripts/d3/lib/jquery-ui/images/ui-icons_ef8c08_256x240.png +0 -0
  249. data/lib/picky-statistics/application/javascripts/d3/lib/jquery-ui/images/ui-icons_ffd27a_256x240.png +0 -0
  250. data/lib/picky-statistics/application/javascripts/d3/lib/jquery-ui/images/ui-icons_ffffff_256x240.png +0 -0
  251. data/lib/picky-statistics/application/javascripts/d3/lib/jquery-ui/jquery-ui.css +318 -0
  252. data/lib/picky-statistics/application/javascripts/d3/lib/jquery-ui/jquery-ui.min.js +83 -0
  253. data/lib/picky-statistics/application/javascripts/d3/lib/jquery/LICENSE +20 -0
  254. data/lib/picky-statistics/application/javascripts/d3/lib/jquery/jquery.js +6883 -0
  255. data/lib/picky-statistics/application/javascripts/d3/lib/jquery/jquery.min.js +166 -0
  256. data/lib/picky-statistics/application/javascripts/d3/lib/polymaps/LICENSE +28 -0
  257. data/lib/picky-statistics/application/javascripts/d3/lib/protovis/LICENSE +27 -0
  258. data/lib/picky-statistics/application/javascripts/d3/lib/science/LICENSE +26 -0
  259. data/lib/picky-statistics/application/javascripts/d3/lib/science/science.js +225 -0
  260. data/lib/picky-statistics/application/javascripts/d3/lib/science/science.lin.js +27 -0
  261. data/lib/picky-statistics/application/javascripts/d3/lib/science/science.lin.min.js +1 -0
  262. data/lib/picky-statistics/application/javascripts/d3/lib/science/science.min.js +1 -0
  263. data/lib/picky-statistics/application/javascripts/d3/lib/science/science.stats.js +720 -0
  264. data/lib/picky-statistics/application/javascripts/d3/lib/science/science.stats.min.js +1 -0
  265. data/lib/picky-statistics/application/javascripts/d3/lib/sizzle/LICENSE +24 -0
  266. data/lib/picky-statistics/application/javascripts/d3/lib/sizzle/sizzle.js +1376 -0
  267. data/lib/picky-statistics/application/javascripts/d3/lib/sizzle/sizzle.min.js +28 -0
  268. data/lib/picky-statistics/application/javascripts/d3/package.json +28 -0
  269. data/lib/picky-statistics/application/javascripts/d3/src/behavior/behavior.js +1 -0
  270. data/lib/picky-statistics/application/javascripts/d3/src/behavior/drag.js +125 -0
  271. data/lib/picky-statistics/application/javascripts/d3/src/behavior/zoom.js +242 -0
  272. data/lib/picky-statistics/application/javascripts/d3/src/chart/box.js +297 -0
  273. data/lib/picky-statistics/application/javascripts/d3/src/chart/bullet.js +237 -0
  274. data/lib/picky-statistics/application/javascripts/d3/src/chart/chart.js +1 -0
  275. data/lib/picky-statistics/application/javascripts/d3/src/chart/horizon.js +203 -0
  276. data/lib/picky-statistics/application/javascripts/d3/src/chart/qq.js +245 -0
  277. data/lib/picky-statistics/application/javascripts/d3/src/compat/date.js +3 -0
  278. data/lib/picky-statistics/application/javascripts/d3/src/compat/style.js +9 -0
  279. data/lib/picky-statistics/application/javascripts/d3/src/core/array.js +29 -0
  280. data/lib/picky-statistics/application/javascripts/d3/src/core/ascending.js +3 -0
  281. data/lib/picky-statistics/application/javascripts/d3/src/core/bisect.js +38 -0
  282. data/lib/picky-statistics/application/javascripts/d3/src/core/collapse.js +3 -0
  283. data/lib/picky-statistics/application/javascripts/d3/src/core/core.js +1 -0
  284. data/lib/picky-statistics/application/javascripts/d3/src/core/descending.js +3 -0
  285. data/lib/picky-statistics/application/javascripts/d3/src/core/dispatch.js +60 -0
  286. data/lib/picky-statistics/application/javascripts/d3/src/core/ease.js +128 -0
  287. data/lib/picky-statistics/application/javascripts/d3/src/core/entries.js +5 -0
  288. data/lib/picky-statistics/application/javascripts/d3/src/core/event.js +6 -0
  289. data/lib/picky-statistics/application/javascripts/d3/src/core/extent.js +21 -0
  290. data/lib/picky-statistics/application/javascripts/d3/src/core/first.js +13 -0
  291. data/lib/picky-statistics/application/javascripts/d3/src/core/format.js +100 -0
  292. data/lib/picky-statistics/application/javascripts/d3/src/core/formatPrefix.js +20 -0
  293. data/lib/picky-statistics/application/javascripts/d3/src/core/functor.js +3 -0
  294. data/lib/picky-statistics/application/javascripts/d3/src/core/hsl.js +63 -0
  295. data/lib/picky-statistics/application/javascripts/d3/src/core/html.js +10 -0
  296. data/lib/picky-statistics/application/javascripts/d3/src/core/interpolate.js +183 -0
  297. data/lib/picky-statistics/application/javascripts/d3/src/core/json.js +5 -0
  298. data/lib/picky-statistics/application/javascripts/d3/src/core/keys.js +5 -0
  299. data/lib/picky-statistics/application/javascripts/d3/src/core/last.js +13 -0
  300. data/lib/picky-statistics/application/javascripts/d3/src/core/max.js +14 -0
  301. data/lib/picky-statistics/application/javascripts/d3/src/core/mean.js +13 -0
  302. data/lib/picky-statistics/application/javascripts/d3/src/core/median.js +5 -0
  303. data/lib/picky-statistics/application/javascripts/d3/src/core/merge.js +3 -0
  304. data/lib/picky-statistics/application/javascripts/d3/src/core/min.js +14 -0
  305. data/lib/picky-statistics/application/javascripts/d3/src/core/nest.js +87 -0
  306. data/lib/picky-statistics/application/javascripts/d3/src/core/noop.js +1 -0
  307. data/lib/picky-statistics/application/javascripts/d3/src/core/ns.js +17 -0
  308. data/lib/picky-statistics/application/javascripts/d3/src/core/number.js +3 -0
  309. data/lib/picky-statistics/application/javascripts/d3/src/core/permute.js +7 -0
  310. data/lib/picky-statistics/application/javascripts/d3/src/core/quantile.js +8 -0
  311. data/lib/picky-statistics/application/javascripts/d3/src/core/random.js +15 -0
  312. data/lib/picky-statistics/application/javascripts/d3/src/core/range.js +21 -0
  313. data/lib/picky-statistics/application/javascripts/d3/src/core/rebind.js +16 -0
  314. data/lib/picky-statistics/application/javascripts/d3/src/core/requote.js +5 -0
  315. data/lib/picky-statistics/application/javascripts/d3/src/core/rgb.js +287 -0
  316. data/lib/picky-statistics/application/javascripts/d3/src/core/round.js +5 -0
  317. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-append.js +15 -0
  318. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-attr.js +44 -0
  319. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-call.js +13 -0
  320. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-classed.js +61 -0
  321. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-data.js +110 -0
  322. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-each.js +9 -0
  323. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-empty.js +3 -0
  324. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-enter-select.js +24 -0
  325. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-enter.js +11 -0
  326. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-filter.js +26 -0
  327. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-html.js +6 -0
  328. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-insert.js +20 -0
  329. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-map.js +5 -0
  330. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-node.js +9 -0
  331. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-on.js +34 -0
  332. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-order.js +11 -0
  333. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-property.js +23 -0
  334. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-remove.js +9 -0
  335. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-root.js +18 -0
  336. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-select.js +30 -0
  337. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-selectAll.js +24 -0
  338. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-sort.js +12 -0
  339. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-style.js +26 -0
  340. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-text.js +6 -0
  341. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-transition.js +14 -0
  342. data/lib/picky-statistics/application/javascripts/d3/src/core/selection.js +25 -0
  343. data/lib/picky-statistics/application/javascripts/d3/src/core/split.js +21 -0
  344. data/lib/picky-statistics/application/javascripts/d3/src/core/sum.js +14 -0
  345. data/lib/picky-statistics/application/javascripts/d3/src/core/text.js +10 -0
  346. data/lib/picky-statistics/application/javascripts/d3/src/core/this.js +3 -0
  347. data/lib/picky-statistics/application/javascripts/d3/src/core/timer.js +104 -0
  348. data/lib/picky-statistics/application/javascripts/d3/src/core/transform.js +58 -0
  349. data/lib/picky-statistics/application/javascripts/d3/src/core/transition-attr.js +23 -0
  350. data/lib/picky-statistics/application/javascripts/d3/src/core/transition-delay.js +6 -0
  351. data/lib/picky-statistics/application/javascripts/d3/src/core/transition-duration.js +6 -0
  352. data/lib/picky-statistics/application/javascripts/d3/src/core/transition-each.js +9 -0
  353. data/lib/picky-statistics/application/javascripts/d3/src/core/transition-remove.js +6 -0
  354. data/lib/picky-statistics/application/javascripts/d3/src/core/transition-select.js +22 -0
  355. data/lib/picky-statistics/application/javascripts/d3/src/core/transition-selectAll.js +22 -0
  356. data/lib/picky-statistics/application/javascripts/d3/src/core/transition-style.js +14 -0
  357. data/lib/picky-statistics/application/javascripts/d3/src/core/transition-text.js +7 -0
  358. data/lib/picky-statistics/application/javascripts/d3/src/core/transition-transition.js +3 -0
  359. data/lib/picky-statistics/application/javascripts/d3/src/core/transition.js +125 -0
  360. data/lib/picky-statistics/application/javascripts/d3/src/core/transpose.js +3 -0
  361. data/lib/picky-statistics/application/javascripts/d3/src/core/uninterpolate.js +9 -0
  362. data/lib/picky-statistics/application/javascripts/d3/src/core/values.js +5 -0
  363. data/lib/picky-statistics/application/javascripts/d3/src/core/xhr.js +10 -0
  364. data/lib/picky-statistics/application/javascripts/d3/src/core/xml.js +10 -0
  365. data/lib/picky-statistics/application/javascripts/d3/src/core/zip.js +13 -0
  366. data/lib/picky-statistics/application/javascripts/d3/src/csv/csv.js +5 -0
  367. data/lib/picky-statistics/application/javascripts/d3/src/csv/format.js +13 -0
  368. data/lib/picky-statistics/application/javascripts/d3/src/csv/parse.js +73 -0
  369. data/lib/picky-statistics/application/javascripts/d3/src/end.js +1 -0
  370. data/lib/picky-statistics/application/javascripts/d3/src/externs.js +6 -0
  371. data/lib/picky-statistics/application/javascripts/d3/src/geo/albers.js +126 -0
  372. data/lib/picky-statistics/application/javascripts/d3/src/geo/azimuthal.js +80 -0
  373. data/lib/picky-statistics/application/javascripts/d3/src/geo/bonne.js +70 -0
  374. data/lib/picky-statistics/application/javascripts/d3/src/geo/bounds.js +83 -0
  375. data/lib/picky-statistics/application/javascripts/d3/src/geo/circle.js +146 -0
  376. data/lib/picky-statistics/application/javascripts/d3/src/geo/equirectangular.js +36 -0
  377. data/lib/picky-statistics/application/javascripts/d3/src/geo/geo.js +3 -0
  378. data/lib/picky-statistics/application/javascripts/d3/src/geo/greatArc.js +80 -0
  379. data/lib/picky-statistics/application/javascripts/d3/src/geo/greatCircle.js +1 -0
  380. data/lib/picky-statistics/application/javascripts/d3/src/geo/mercator.js +36 -0
  381. data/lib/picky-statistics/application/javascripts/d3/src/geo/path.js +271 -0
  382. data/lib/picky-statistics/application/javascripts/d3/src/geo/type.js +5 -0
  383. data/lib/picky-statistics/application/javascripts/d3/src/geom/contour.js +78 -0
  384. data/lib/picky-statistics/application/javascripts/d3/src/geom/delaunay.js +31 -0
  385. data/lib/picky-statistics/application/javascripts/d3/src/geom/geom.js +1 -0
  386. data/lib/picky-statistics/application/javascripts/d3/src/geom/hull.js +98 -0
  387. data/lib/picky-statistics/application/javascripts/d3/src/geom/polygon.js +88 -0
  388. data/lib/picky-statistics/application/javascripts/d3/src/geom/quadtree.js +129 -0
  389. data/lib/picky-statistics/application/javascripts/d3/src/geom/voronoi.js +409 -0
  390. data/lib/picky-statistics/application/javascripts/d3/src/layout/bundle.js +57 -0
  391. data/lib/picky-statistics/application/javascripts/d3/src/layout/chord.js +153 -0
  392. data/lib/picky-statistics/application/javascripts/d3/src/layout/cluster.js +78 -0
  393. data/lib/picky-statistics/application/javascripts/d3/src/layout/force.js +342 -0
  394. data/lib/picky-statistics/application/javascripts/d3/src/layout/hierarchy.js +120 -0
  395. data/lib/picky-statistics/application/javascripts/d3/src/layout/histogram.js +102 -0
  396. data/lib/picky-statistics/application/javascripts/d3/src/layout/layout.js +1 -0
  397. data/lib/picky-statistics/application/javascripts/d3/src/layout/pack.js +203 -0
  398. data/lib/picky-statistics/application/javascripts/d3/src/layout/partition.js +48 -0
  399. data/lib/picky-statistics/application/javascripts/d3/src/layout/pie.js +95 -0
  400. data/lib/picky-statistics/application/javascripts/d3/src/layout/stack.js +237 -0
  401. data/lib/picky-statistics/application/javascripts/d3/src/layout/tree.js +237 -0
  402. data/lib/picky-statistics/application/javascripts/d3/src/layout/treemap.js +217 -0
  403. data/lib/picky-statistics/application/javascripts/d3/src/package.js +18 -0
  404. data/lib/picky-statistics/application/javascripts/d3/src/scale/bilinear.js +7 -0
  405. data/lib/picky-statistics/application/javascripts/d3/src/scale/category.js +54 -0
  406. data/lib/picky-statistics/application/javascripts/d3/src/scale/linear.js +111 -0
  407. data/lib/picky-statistics/application/javascripts/d3/src/scale/log.js +85 -0
  408. data/lib/picky-statistics/application/javascripts/d3/src/scale/nice.js +24 -0
  409. data/lib/picky-statistics/application/javascripts/d3/src/scale/ordinal.js +81 -0
  410. data/lib/picky-statistics/application/javascripts/d3/src/scale/polylinear.js +16 -0
  411. data/lib/picky-statistics/application/javascripts/d3/src/scale/pow.js +54 -0
  412. data/lib/picky-statistics/application/javascripts/d3/src/scale/quantile.js +43 -0
  413. data/lib/picky-statistics/application/javascripts/d3/src/scale/quantize.js +36 -0
  414. data/lib/picky-statistics/application/javascripts/d3/src/scale/scale.js +10 -0
  415. data/lib/picky-statistics/application/javascripts/d3/src/scale/sqrt.js +3 -0
  416. data/lib/picky-statistics/application/javascripts/d3/src/start.js +1 -0
  417. data/lib/picky-statistics/application/javascripts/d3/src/svg/arc.js +95 -0
  418. data/lib/picky-statistics/application/javascripts/d3/src/svg/area-radial.js +10 -0
  419. data/lib/picky-statistics/application/javascripts/d3/src/svg/area.js +89 -0
  420. data/lib/picky-statistics/application/javascripts/d3/src/svg/axis.js +200 -0
  421. data/lib/picky-statistics/application/javascripts/d3/src/svg/brush.js +334 -0
  422. data/lib/picky-statistics/application/javascripts/d3/src/svg/chord.js +99 -0
  423. data/lib/picky-statistics/application/javascripts/d3/src/svg/diagonal-radial.js +22 -0
  424. data/lib/picky-statistics/application/javascripts/d3/src/svg/diagonal.js +38 -0
  425. data/lib/picky-statistics/application/javascripts/d3/src/svg/line-radial.js +22 -0
  426. data/lib/picky-statistics/application/javascripts/d3/src/svg/line.js +415 -0
  427. data/lib/picky-statistics/application/javascripts/d3/src/svg/mouse.js +29 -0
  428. data/lib/picky-statistics/application/javascripts/d3/src/svg/svg.js +1 -0
  429. data/lib/picky-statistics/application/javascripts/d3/src/svg/symbol.js +98 -0
  430. data/lib/picky-statistics/application/javascripts/d3/src/svg/touches.js +9 -0
  431. data/lib/picky-statistics/application/javascripts/d3/src/time/day.js +7 -0
  432. data/lib/picky-statistics/application/javascripts/d3/src/time/days.js +11 -0
  433. data/lib/picky-statistics/application/javascripts/d3/src/time/format-iso.js +13 -0
  434. data/lib/picky-statistics/application/javascripts/d3/src/time/format-utc.js +53 -0
  435. data/lib/picky-statistics/application/javascripts/d3/src/time/format.js +327 -0
  436. data/lib/picky-statistics/application/javascripts/d3/src/time/hour.js +8 -0
  437. data/lib/picky-statistics/application/javascripts/d3/src/time/hours.js +11 -0
  438. data/lib/picky-statistics/application/javascripts/d3/src/time/minute.js +5 -0
  439. data/lib/picky-statistics/application/javascripts/d3/src/time/minutes.js +11 -0
  440. data/lib/picky-statistics/application/javascripts/d3/src/time/month.js +7 -0
  441. data/lib/picky-statistics/application/javascripts/d3/src/time/months.js +11 -0
  442. data/lib/picky-statistics/application/javascripts/d3/src/time/range.js +16 -0
  443. data/lib/picky-statistics/application/javascripts/d3/src/time/scale-utc.js +36 -0
  444. data/lib/picky-statistics/application/javascripts/d3/src/time/scale.js +118 -0
  445. data/lib/picky-statistics/application/javascripts/d3/src/time/second.js +5 -0
  446. data/lib/picky-statistics/application/javascripts/d3/src/time/seconds.js +7 -0
  447. data/lib/picky-statistics/application/javascripts/d3/src/time/time.js +3 -0
  448. data/lib/picky-statistics/application/javascripts/d3/src/time/week.js +9 -0
  449. data/lib/picky-statistics/application/javascripts/d3/src/time/weeks.js +11 -0
  450. data/lib/picky-statistics/application/javascripts/d3/src/time/year.js +7 -0
  451. data/lib/picky-statistics/application/javascripts/d3/src/time/years.js +11 -0
  452. data/lib/picky-statistics/application/javascripts/d3/test/core/ascending-test.js +47 -0
  453. data/lib/picky-statistics/application/javascripts/d3/test/core/bisect-test.js +103 -0
  454. data/lib/picky-statistics/application/javascripts/d3/test/core/descending-test.js +47 -0
  455. data/lib/picky-statistics/application/javascripts/d3/test/core/dispatch-test.js +129 -0
  456. data/lib/picky-statistics/application/javascripts/d3/test/core/ease-test.js +129 -0
  457. data/lib/picky-statistics/application/javascripts/d3/test/core/entries-test.js +43 -0
  458. data/lib/picky-statistics/application/javascripts/d3/test/core/extent-test.js +51 -0
  459. data/lib/picky-statistics/application/javascripts/d3/test/core/first-test.js +42 -0
  460. data/lib/picky-statistics/application/javascripts/d3/test/core/format-test.js +239 -0
  461. data/lib/picky-statistics/application/javascripts/d3/test/core/formatPrefix-test.js +108 -0
  462. data/lib/picky-statistics/application/javascripts/d3/test/core/functor-test.js +29 -0
  463. data/lib/picky-statistics/application/javascripts/d3/test/core/hsl-test.js +82 -0
  464. data/lib/picky-statistics/application/javascripts/d3/test/core/html-test.js +37 -0
  465. data/lib/picky-statistics/application/javascripts/d3/test/core/interpolate-test.js +209 -0
  466. data/lib/picky-statistics/application/javascripts/d3/test/core/json-test.js +37 -0
  467. data/lib/picky-statistics/application/javascripts/d3/test/core/keys-test.js +31 -0
  468. data/lib/picky-statistics/application/javascripts/d3/test/core/last-test.js +42 -0
  469. data/lib/picky-statistics/application/javascripts/d3/test/core/max-test.js +51 -0
  470. data/lib/picky-statistics/application/javascripts/d3/test/core/mean-test.js +43 -0
  471. data/lib/picky-statistics/application/javascripts/d3/test/core/median-test.js +43 -0
  472. data/lib/picky-statistics/application/javascripts/d3/test/core/merge-test.js +27 -0
  473. data/lib/picky-statistics/application/javascripts/d3/test/core/min-test.js +50 -0
  474. data/lib/picky-statistics/application/javascripts/d3/test/core/nest-test.js +236 -0
  475. data/lib/picky-statistics/application/javascripts/d3/test/core/ns-test.js +58 -0
  476. data/lib/picky-statistics/application/javascripts/d3/test/core/permute-test.js +53 -0
  477. data/lib/picky-statistics/application/javascripts/d3/test/core/quantile-test.js +50 -0
  478. data/lib/picky-statistics/application/javascripts/d3/test/core/range-test.js +93 -0
  479. data/lib/picky-statistics/application/javascripts/d3/test/core/rebind-test.js +52 -0
  480. data/lib/picky-statistics/application/javascripts/d3/test/core/requote-test.js +53 -0
  481. data/lib/picky-statistics/application/javascripts/d3/test/core/rgb-test.js +89 -0
  482. data/lib/picky-statistics/application/javascripts/d3/test/core/round-test.js +70 -0
  483. data/lib/picky-statistics/application/javascripts/d3/test/core/select-test.js +42 -0
  484. data/lib/picky-statistics/application/javascripts/d3/test/core/selectAll-test.js +46 -0
  485. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-append-test.js +123 -0
  486. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-attr-test.js +153 -0
  487. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-call-test.js +71 -0
  488. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-classed-test.js +219 -0
  489. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-data-test.js +168 -0
  490. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-each-test.js +83 -0
  491. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-empty-test.js +51 -0
  492. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-filter-test.js +70 -0
  493. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-html-test.js +121 -0
  494. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-insert-test.js +136 -0
  495. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-map-test.js +47 -0
  496. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-node-test.js +50 -0
  497. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-on-test.js +95 -0
  498. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-order-test.js +32 -0
  499. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-property-test.js +91 -0
  500. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-remove-test.js +39 -0
  501. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-select-test.js +125 -0
  502. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-selectAll-test.js +128 -0
  503. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-sort-test.js +59 -0
  504. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-style-test.js +100 -0
  505. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-test.js +35 -0
  506. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-text-test.js +109 -0
  507. data/lib/picky-statistics/application/javascripts/d3/test/core/split-test.js +34 -0
  508. data/lib/picky-statistics/application/javascripts/d3/test/core/sum-test.js +47 -0
  509. data/lib/picky-statistics/application/javascripts/d3/test/core/text-test.js +48 -0
  510. data/lib/picky-statistics/application/javascripts/d3/test/core/timer-test.js +62 -0
  511. data/lib/picky-statistics/application/javascripts/d3/test/core/transition-test-attr.js +54 -0
  512. data/lib/picky-statistics/application/javascripts/d3/test/core/transition-test-attrTween.js +67 -0
  513. data/lib/picky-statistics/application/javascripts/d3/test/core/transition-test-call.js +33 -0
  514. data/lib/picky-statistics/application/javascripts/d3/test/core/transition-test-delay.js +41 -0
  515. data/lib/picky-statistics/application/javascripts/d3/test/core/transition-test-duration.js +41 -0
  516. data/lib/picky-statistics/application/javascripts/d3/test/core/transition-test-each.js +166 -0
  517. data/lib/picky-statistics/application/javascripts/d3/test/core/transition-test-id.js +20 -0
  518. data/lib/picky-statistics/application/javascripts/d3/test/core/transition-test-remove.js +46 -0
  519. data/lib/picky-statistics/application/javascripts/d3/test/core/transition-test-select.js +63 -0
  520. data/lib/picky-statistics/application/javascripts/d3/test/core/transition-test-selectAll.js +59 -0
  521. data/lib/picky-statistics/application/javascripts/d3/test/core/transition-test-style.js +49 -0
  522. data/lib/picky-statistics/application/javascripts/d3/test/core/transition-test-styleTween.js +73 -0
  523. data/lib/picky-statistics/application/javascripts/d3/test/core/transition-test-text.js +30 -0
  524. data/lib/picky-statistics/application/javascripts/d3/test/core/transition-test-time.js +36 -0
  525. data/lib/picky-statistics/application/javascripts/d3/test/core/transition-test-transition.js +60 -0
  526. data/lib/picky-statistics/application/javascripts/d3/test/core/transition-test-tween.js +71 -0
  527. data/lib/picky-statistics/application/javascripts/d3/test/core/transition-test.js +66 -0
  528. data/lib/picky-statistics/application/javascripts/d3/test/core/transpose-test.js +32 -0
  529. data/lib/picky-statistics/application/javascripts/d3/test/core/values-test.js +35 -0
  530. data/lib/picky-statistics/application/javascripts/d3/test/core/version-test.js +18 -0
  531. data/lib/picky-statistics/application/javascripts/d3/test/core/xhr-test.js +56 -0
  532. data/lib/picky-statistics/application/javascripts/d3/test/core/xml-test.js +48 -0
  533. data/lib/picky-statistics/application/javascripts/d3/test/core/zip-test.js +32 -0
  534. data/lib/picky-statistics/application/javascripts/d3/test/csv/csv-test.js +38 -0
  535. data/lib/picky-statistics/application/javascripts/d3/test/csv/format-test.js +39 -0
  536. data/lib/picky-statistics/application/javascripts/d3/test/csv/parse-test.js +101 -0
  537. data/lib/picky-statistics/application/javascripts/d3/test/env-assert.js +96 -0
  538. data/lib/picky-statistics/application/javascripts/d3/test/env-fragment.js +8 -0
  539. data/lib/picky-statistics/application/javascripts/d3/test/env-xhr.js +56 -0
  540. data/lib/picky-statistics/application/javascripts/d3/test/env.js +13 -0
  541. data/lib/picky-statistics/application/javascripts/d3/test/geo/albers-test.js +57 -0
  542. data/lib/picky-statistics/application/javascripts/d3/test/geo/azimuthal-test.js +261 -0
  543. data/lib/picky-statistics/application/javascripts/d3/test/geo/bonne-test.js +116 -0
  544. data/lib/picky-statistics/application/javascripts/d3/test/geo/equirectangular-test.js +50 -0
  545. data/lib/picky-statistics/application/javascripts/d3/test/geo/greatArc-test.js +41 -0
  546. data/lib/picky-statistics/application/javascripts/d3/test/geo/mercator-test.js +57 -0
  547. data/lib/picky-statistics/application/javascripts/d3/test/geo/path-test.js +25 -0
  548. data/lib/picky-statistics/application/javascripts/d3/test/geom/polygon-test.js +57 -0
  549. data/lib/picky-statistics/application/javascripts/d3/test/layout/cluster-test.js +39 -0
  550. data/lib/picky-statistics/application/javascripts/d3/test/layout/hierarchy-test.js +30 -0
  551. data/lib/picky-statistics/application/javascripts/d3/test/layout/histogram-test.js +91 -0
  552. data/lib/picky-statistics/application/javascripts/d3/test/layout/pack-test.js +67 -0
  553. data/lib/picky-statistics/application/javascripts/d3/test/layout/partition-test.js +50 -0
  554. data/lib/picky-statistics/application/javascripts/d3/test/layout/tree-test.js +41 -0
  555. data/lib/picky-statistics/application/javascripts/d3/test/layout/treemap-test.js +190 -0
  556. data/lib/picky-statistics/application/javascripts/d3/test/scale/category-test.js +74 -0
  557. data/lib/picky-statistics/application/javascripts/d3/test/scale/linear-test.js +243 -0
  558. data/lib/picky-statistics/application/javascripts/d3/test/scale/log-test.js +266 -0
  559. data/lib/picky-statistics/application/javascripts/d3/test/scale/ordinal-test.js +207 -0
  560. data/lib/picky-statistics/application/javascripts/d3/test/scale/pow-test.js +263 -0
  561. data/lib/picky-statistics/application/javascripts/d3/test/scale/quantile-test.js +64 -0
  562. data/lib/picky-statistics/application/javascripts/d3/test/scale/quantize-test.js +69 -0
  563. data/lib/picky-statistics/application/javascripts/d3/test/scale/sqrt-test.js +256 -0
  564. data/lib/picky-statistics/application/javascripts/d3/test/svg/arc-test.js +147 -0
  565. data/lib/picky-statistics/application/javascripts/d3/test/svg/area-radial-test.js +200 -0
  566. data/lib/picky-statistics/application/javascripts/d3/test/svg/area-test.js +192 -0
  567. data/lib/picky-statistics/application/javascripts/d3/test/svg/axis-test.js +353 -0
  568. data/lib/picky-statistics/application/javascripts/d3/test/svg/line-radial-test.js +125 -0
  569. data/lib/picky-statistics/application/javascripts/d3/test/svg/line-test.js +189 -0
  570. data/lib/picky-statistics/application/javascripts/d3/test/svg/symbol-test.js +96 -0
  571. data/lib/picky-statistics/application/javascripts/d3/test/time/day-test.js +65 -0
  572. data/lib/picky-statistics/application/javascripts/d3/test/time/days-test.js +105 -0
  573. data/lib/picky-statistics/application/javascripts/d3/test/time/format-test.js +467 -0
  574. data/lib/picky-statistics/application/javascripts/d3/test/time/hour-test.js +103 -0
  575. data/lib/picky-statistics/application/javascripts/d3/test/time/hours-test.js +135 -0
  576. data/lib/picky-statistics/application/javascripts/d3/test/time/minute-test.js +43 -0
  577. data/lib/picky-statistics/application/javascripts/d3/test/time/minutes-test.js +101 -0
  578. data/lib/picky-statistics/application/javascripts/d3/test/time/month-test.js +53 -0
  579. data/lib/picky-statistics/application/javascripts/d3/test/time/months-test.js +105 -0
  580. data/lib/picky-statistics/application/javascripts/d3/test/time/scale-test.js +525 -0
  581. data/lib/picky-statistics/application/javascripts/d3/test/time/second-test.js +41 -0
  582. data/lib/picky-statistics/application/javascripts/d3/test/time/seconds-test.js +101 -0
  583. data/lib/picky-statistics/application/javascripts/d3/test/time/week-test.js +59 -0
  584. data/lib/picky-statistics/application/javascripts/d3/test/time/weeks-test.js +105 -0
  585. data/lib/picky-statistics/application/javascripts/d3/test/time/year-test.js +41 -0
  586. data/lib/picky-statistics/application/javascripts/d3/test/time/years-test.js +73 -0
  587. data/lib/picky-statistics/application/javascripts/full_live.js +60 -0
  588. data/lib/picky-statistics/application/javascripts/graph.js +83 -0
  589. data/lib/picky-statistics/application/javascripts/results.js +86 -0
  590. data/lib/picky-statistics/application/javascripts/rickshaw.js +1 -0
  591. data/lib/picky-statistics/application/javascripts/statistics.js +30 -55
  592. data/lib/picky-statistics/application/stylesheets/statistics.css +83 -27
  593. data/lib/picky-statistics/application/views/index.haml +29 -39
  594. data/lib/picky-statistics/statistics/logfile_reader.rb +43 -32
  595. data/spec/lib/picky-statistics/statistics/logfile_reader_spec.rb +28 -25
  596. metadata +596 -6
@@ -0,0 +1 @@
1
+ (function(){function h(a,b){var c=b+1;while(c<a.length&&a[c]===0)c++;return c}function g(a,b,c,d){var e=d[0],f=d[1],g=h(b,f);if(g<a.length&&a[g]-a[c]<a[c]-a[e]){var i=h(b,e);d[0]=i,d[1]=g}}function f(a){return(a=1-a*a*a)*a*a}function e(a){var b=a.length,c=0;while(++c<b)if(a[c-1]>=a[c])return!1;return!0}function d(a){var b=a.length,c=-1;while(++c<b)if(!isFinite(a[c]))return!1;return!0}function c(a,b,c,d){var e=[],f=a+c,g=b.length,h=-1;while(++h<g)e[h]=(a*b[h]+c*d[h])/f;return e}function b(b,c){var d=c.length;if(b>d)return null;var e=[],f=[],g={},h=0,i=0,j,k,l;while(i<b){if(h===d)return null;var m=Math.floor(Math.random()*d);if(m in g)continue;g[m]=1,h++,k=c[m],l=!0;for(j=0;j<i;j++)if(a(k,e[j])){l=!1;break}l&&(e[i]=k,f[i]=m,i++)}return e}function a(a,b){if(!a||!b||a.length!==b.length)return!1;var c=a.length,d=-1;while(++d<c)if(a[d]!==b[d])return!1;return!0}science.stats={},science.stats.bandwidth={nrd0:function(a){var b=Math.sqrt(science.stats.variance(a));(lo=Math.min(b,science.stats.iqr(a)/1.34))||(lo=b)||(lo=Math.abs(a[1]))||(lo=1);return.9*lo*Math.pow(a.length,-0.2)},nrd:function(a){var b=science.stats.iqr(a)/1.34;return 1.06*Math.min(Math.sqrt(science.stats.variance(a)),b)*Math.pow(a.length,-0.2)}},science.stats.distance={euclidean:function(a,b){var c=a.length,d=-1,e=0,f;while(++d<c)f=a[d]-b[d],e+=f*f;return Math.sqrt(e)},manhattan:function(a,b){var c=a.length,d=-1,e=0;while(++d<c)e+=Math.abs(a[d]-b[d]);return e},minkowski:function(a){return function(b,c){var d=b.length,e=-1,f=0;while(++e<d)f+=Math.pow(Math.abs(b[e]-c[e]),a);return Math.pow(f,1/a)}},chebyshev:function(a,b){var c=a.length,d=-1,e=0,f;while(++d<c)f=Math.abs(a[d]-b[d]),f>e&&(e=f);return e},hamming:function(a,b){var c=a.length,d=-1,e=0;while(++d<c)a[d]!==b[d]&&e++;return e},jaccard:function(a,b){var c=a.length,d=-1,e=0;while(++d<c)a[d]===b[d]&&e++;return e/c},braycurtis:function(a,b){var c=a.length,d=-1,e=0,f=0,g,h;while(++d<c)g=a[d],h=b[d],e+=Math.abs(g-h),f+=Math.abs(g+h);return e/f}},science.stats.erf=function(a){var b=.254829592,c=-0.284496736,d=1.421413741,e=-1.453152027,f=1.061405429,g=.3275911,h=a<0?-1:1;a<0&&(h=-1,a=-a);var i=1/(1+g*a);return h*(1-((((f*i+e)*i+d)*i+c)*i+b)*i*Math.exp(-a*a))},science.stats.phi=function(a){return.5*(1+science.stats.erf(a/Math.SQRT2))},science.stats.kernel={uniform:function(a){return a<=1&&a>=-1?.5:0},triangular:function(a){return a<=1&&a>=-1?1-Math.abs(a):0},epanechnikov:function(a){return a<=1&&a>=-1?.75*(1-a*a):0},quartic:function(a){if(a<=1&&a>=-1){var b=1-a*a;return.9375*b*b}return 0},triweight:function(a){if(a<=1&&a>=-1){var b=1-a*a;return 35/32*b*b*b}return 0},gaussian:function(a){return 1/Math.sqrt(2*Math.PI)*Math.exp(-0.5*a*a)},cosine:function(a){return a<=1&&a>=-1?Math.PI/4*Math.cos(Math.PI/2*a):0}},science.stats.kde=function(){function d(d,e){var f=c.call(this,b);return d.map(function(c){var d=-1,e=0,g=b.length;while(++d<g)e+=a((c-b[d])/f);return[c,e/f/g]})}var a=science.stats.kernel.gaussian,b=[],c=science.stats.bandwidth.nrd;d.kernel=function(b){if(!arguments.length)return a;a=b;return d},d.sample=function(a){if(!arguments.length)return b;b=a;return d},d.bandwidth=function(a){if(!arguments.length)return c;c=science.functor(a);return d};return d},science.stats.kmeans=function(){function f(f){var g=f.length,h=[],i=[],j=1,l=0,m=b(e,f),n,o,p,q,r,s,t;while(j&&l<d){p=-1;while(++p<e)i[p]=0;o=-1;while(++o<g){q=f[o],s=Infinity,p=-1;while(++p<e)r=c.call(this,m[p],q),r<s&&(s=r,t=p);i[h[o]=t]++}n=[],o=-1;while(++o<g){q=h[o],r=n[q];if(r==null)n[q]=f[o].slice();else{p=-1;while(++p<r.length)r[p]+=f[o][p]}}p=-1;while(++p<e){q=n[p],r=1/i[p],o=-1;while(++o<q.length)q[o]*=r}j=0,p=-1;while(++p<e)if(!a(n[p],m[p])){j=1;break}m=n,l++}return{assignments:h,centroids:m}}var c=science.stats.distance.euclidean,d=1e3,e=1;f.k=function(a){if(!arguments.length)return e;e=a;return f},f.distance=function(a){if(!arguments.length)return c;c=a;return f};return f},science.stats.hcluster=function(){function d(d){var e=d.length,f=[],g=[],h=[],i=[],j,k,l,m,n,o,p,q;p=-1;while(++p<e){f[p]=0,h[p]=[],q=-1;while(++q<e)h[p][q]=p===q?Infinity:a(d[p],d[q]),h[p][f[p]]>h[p][q]&&(f[p]=q)}p=-1;while(++p<e)i[p]=[],i[p][0]={left:null,right:null,dist:0,centroid:d[p],size:1,depth:0},g[p]=1;for(n=0;n<e-1;n++){j=0;for(p=0;p<e;p++)h[p][f[p]]<h[j][f[j]]&&(j=p);k=f[j],l=i[j][0],m=i[k][0],newCluster={left:l,right:m,dist:h[j][k],centroid:c(l.size,l.centroid,m.size,m.centroid),size:l.size+m.size,depth:1+Math.max(l.depth,m.depth)},i[j].splice(0,0,newCluster),g[j]+=g[k];for(q=0;q<e;q++)switch(b){case"single":h[j][q]>h[k][q]&&(h[q][j]=h[j][q]=h[k][q]);break;case"complete":h[j][q]<h[k][q]&&(h[q][j]=h[j][q]=h[k][q]);break;case"average":h[q][j]=h[j][q]=(g[j]*h[j][q]+g[k]*h[k][q])/(g[j]+g[q])}h[j][j]=Infinity;for(p=0;p<e;p++)h[p][k]=h[k][p]=Infinity;for(q=0;q<e;q++)f[q]==k&&(f[q]=j),h[j][q]<h[j][f[j]]&&(f[j]=q);o=newCluster}return o}var a=science.stats.distance.euclidean,b="simple";d.distance=function(b){if(!arguments.length)return a;a=b;return d};return d},science.stats.iqr=function(a){var b=science.stats.quantiles(a,[.25,.75]);return b[1]-b[0]},science.stats.loess=function(){function h(h,i,j){var k=h.length,l;if(k!==i.length)throw{error:"Mismatched array lengths"};if(k==0)throw{error:"At least one point required."};if(arguments.length<3){j=[],l=-1;while(++l<k)j[l]=1}d(h),d(i),d(j),e(h);if(k==1)return[i[0]];if(k==2)return[i[0],i[1]];var m=Math.floor(a*k);if(m<2)throw{error:"Bandwidth too small."};var n=[],o=[],p=[];l=-1;while(++l<k)n[l]=0,o[l]=0,p[l]=1;var q=-1;while(++q<=b){var r=[0,m-1],s;l=-1;while(++l<k){s=h[l],l>0&&g(h,j,l,r);var t=r[0],u=r[1],v=h[l]-h[t]>h[u]-h[l]?t:u,w=0,x=0,y=0,z=0,A=0,B=Math.abs(1/(h[v]-s));for(var C=t;C<=u;++C){var D=h[C],E=i[C],F=C<l?s-D:D-s,G=f(F*B)*p[C]*j[C],H=D*G;w+=G,x+=H,y+=D*H,z+=E*G,A+=E*H}var I=x/w,J=z/w,K=A/w,L=y/w,M=Math.sqrt(Math.abs(L-I*I))<c?0:(K-I*J)/(L-I*I),N=J-M*I;n[l]=M*s+N,o[l]=Math.abs(i[l]-n[l])}if(q===b)break;var O=o.slice();O.sort();var P=O[Math.floor(k/2)];if(Math.abs(P)<c)break;var Q,G;l=-1;while(++l<k)Q=o[l]/(6*P),p[l]=Q>=1?0:(G=1-Q*Q)*G}return n}var a=.3,b=2,c=1e-12;h.bandwidth=function(b){if(!arguments.length)return b;a=b;return h},h.robustnessIterations=function(a){if(!arguments.length)return a;b=a;return h},h.accuracy=function(a){if(!arguments.length)return a;c=a;return h};return h},science.stats.mean=function(a){var b=a.length;if(b===0)return NaN;var c=0,d=-1;while(++d<b)c+=(a[d]-c)/(d+1);return c},science.stats.median=function(a){return science.stats.quantiles(a,[.5])[0]},science.stats.mode=function(a){a=a.slice().sort(science.ascending);var b,c=a.length,d=-1,e=d,f=null,g=0,h,i;while(++d<c)(i=a[d])!==f&&((h=d-e)>g&&(g=h,b=f),f=i,e=d);return b},science.stats.quantiles=function(a,b){a=a.slice().sort(science.ascending);var c=a.length-1;return b.map(function(b){if(b===0)return a[0];if(b===1)return a[c];var d=1+b*c,e=Math.floor(d),f=d-e,g=a[e-1];return f===0?g:g+f*(a[e]-g)})},science.stats.variance=function(a){var b=a.length;if(b<1)return NaN;if(b===1)return 0;var c=science.stats.mean(a),d=-1,e=0;while(++d<b){var f=a[d]-c;e+=f*f}return e/(b-1)}})()
@@ -0,0 +1,24 @@
1
+ Copyright (c) 2009, John Resig
2
+ All rights reserved.
3
+
4
+ Redistribution and use in source and binary forms, with or without
5
+ modification, are permitted provided that the following conditions are met:
6
+ * Redistributions of source code must retain the above copyright
7
+ notice, this list of conditions and the following disclaimer.
8
+ * Redistributions in binary form must reproduce the above copyright
9
+ notice, this list of conditions and the following disclaimer in the
10
+ documentation and/or other materials provided with the distribution.
11
+ * Neither the name of the <organization> nor the
12
+ names of its contributors may be used to endorse or promote products
13
+ derived from this software without specific prior written permission.
14
+
15
+ THIS SOFTWARE IS PROVIDED BY John Resig ''AS IS'' AND ANY
16
+ EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18
+ DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY
19
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,1376 @@
1
+ /*!
2
+ * Sizzle CSS Selector Engine
3
+ * Copyright 2011, The Dojo Foundation
4
+ * Released under the MIT, BSD, and GPL Licenses.
5
+ * More information: http://sizzlejs.com/
6
+ */
7
+ (function(){
8
+
9
+ var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
10
+ done = 0,
11
+ toString = Object.prototype.toString,
12
+ hasDuplicate = false,
13
+ baseHasDuplicate = true;
14
+
15
+ // Here we check if the JavaScript engine is using some sort of
16
+ // optimization where it does not always call our comparision
17
+ // function. If that is the case, discard the hasDuplicate value.
18
+ // Thus far that includes Google Chrome.
19
+ [0, 0].sort(function() {
20
+ baseHasDuplicate = false;
21
+ return 0;
22
+ });
23
+
24
+ var Sizzle = function( selector, context, results, seed ) {
25
+ results = results || [];
26
+ context = context || document;
27
+
28
+ var origContext = context;
29
+
30
+ if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
31
+ return [];
32
+ }
33
+
34
+ if ( !selector || typeof selector !== "string" ) {
35
+ return results;
36
+ }
37
+
38
+ var m, set, checkSet, extra, ret, cur, pop, i,
39
+ prune = true,
40
+ contextXML = Sizzle.isXML( context ),
41
+ parts = [],
42
+ soFar = selector;
43
+
44
+ // Reset the position of the chunker regexp (start from head)
45
+ do {
46
+ chunker.exec( "" );
47
+ m = chunker.exec( soFar );
48
+
49
+ if ( m ) {
50
+ soFar = m[3];
51
+
52
+ parts.push( m[1] );
53
+
54
+ if ( m[2] ) {
55
+ extra = m[3];
56
+ break;
57
+ }
58
+ }
59
+ } while ( m );
60
+
61
+ if ( parts.length > 1 && origPOS.exec( selector ) ) {
62
+
63
+ if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
64
+ set = posProcess( parts[0] + parts[1], context );
65
+
66
+ } else {
67
+ set = Expr.relative[ parts[0] ] ?
68
+ [ context ] :
69
+ Sizzle( parts.shift(), context );
70
+
71
+ while ( parts.length ) {
72
+ selector = parts.shift();
73
+
74
+ if ( Expr.relative[ selector ] ) {
75
+ selector += parts.shift();
76
+ }
77
+
78
+ set = posProcess( selector, set );
79
+ }
80
+ }
81
+
82
+ } else {
83
+ // Take a shortcut and set the context if the root selector is an ID
84
+ // (but not if it'll be faster if the inner selector is an ID)
85
+ if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
86
+ Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
87
+
88
+ ret = Sizzle.find( parts.shift(), context, contextXML );
89
+ context = ret.expr ?
90
+ Sizzle.filter( ret.expr, ret.set )[0] :
91
+ ret.set[0];
92
+ }
93
+
94
+ if ( context ) {
95
+ ret = seed ?
96
+ { expr: parts.pop(), set: makeArray(seed) } :
97
+ Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
98
+
99
+ set = ret.expr ?
100
+ Sizzle.filter( ret.expr, ret.set ) :
101
+ ret.set;
102
+
103
+ if ( parts.length > 0 ) {
104
+ checkSet = makeArray( set );
105
+
106
+ } else {
107
+ prune = false;
108
+ }
109
+
110
+ while ( parts.length ) {
111
+ cur = parts.pop();
112
+ pop = cur;
113
+
114
+ if ( !Expr.relative[ cur ] ) {
115
+ cur = "";
116
+ } else {
117
+ pop = parts.pop();
118
+ }
119
+
120
+ if ( pop == null ) {
121
+ pop = context;
122
+ }
123
+
124
+ Expr.relative[ cur ]( checkSet, pop, contextXML );
125
+ }
126
+
127
+ } else {
128
+ checkSet = parts = [];
129
+ }
130
+ }
131
+
132
+ if ( !checkSet ) {
133
+ checkSet = set;
134
+ }
135
+
136
+ if ( !checkSet ) {
137
+ Sizzle.error( cur || selector );
138
+ }
139
+
140
+ if ( toString.call(checkSet) === "[object Array]" ) {
141
+ if ( !prune ) {
142
+ results.push.apply( results, checkSet );
143
+
144
+ } else if ( context && context.nodeType === 1 ) {
145
+ for ( i = 0; checkSet[i] != null; i++ ) {
146
+ if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {
147
+ results.push( set[i] );
148
+ }
149
+ }
150
+
151
+ } else {
152
+ for ( i = 0; checkSet[i] != null; i++ ) {
153
+ if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
154
+ results.push( set[i] );
155
+ }
156
+ }
157
+ }
158
+
159
+ } else {
160
+ makeArray( checkSet, results );
161
+ }
162
+
163
+ if ( extra ) {
164
+ Sizzle( extra, origContext, results, seed );
165
+ Sizzle.uniqueSort( results );
166
+ }
167
+
168
+ return results;
169
+ };
170
+
171
+ Sizzle.uniqueSort = function( results ) {
172
+ if ( sortOrder ) {
173
+ hasDuplicate = baseHasDuplicate;
174
+ results.sort( sortOrder );
175
+
176
+ if ( hasDuplicate ) {
177
+ for ( var i = 1; i < results.length; i++ ) {
178
+ if ( results[i] === results[ i - 1 ] ) {
179
+ results.splice( i--, 1 );
180
+ }
181
+ }
182
+ }
183
+ }
184
+
185
+ return results;
186
+ };
187
+
188
+ Sizzle.matches = function( expr, set ) {
189
+ return Sizzle( expr, null, null, set );
190
+ };
191
+
192
+ Sizzle.matchesSelector = function( node, expr ) {
193
+ return Sizzle( expr, null, null, [node] ).length > 0;
194
+ };
195
+
196
+ Sizzle.find = function( expr, context, isXML ) {
197
+ var set;
198
+
199
+ if ( !expr ) {
200
+ return [];
201
+ }
202
+
203
+ for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
204
+ var match,
205
+ type = Expr.order[i];
206
+
207
+ if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
208
+ var left = match[1];
209
+ match.splice( 1, 1 );
210
+
211
+ if ( left.substr( left.length - 1 ) !== "\\" ) {
212
+ match[1] = (match[1] || "").replace(/\\/g, "");
213
+ set = Expr.find[ type ]( match, context, isXML );
214
+
215
+ if ( set != null ) {
216
+ expr = expr.replace( Expr.match[ type ], "" );
217
+ break;
218
+ }
219
+ }
220
+ }
221
+ }
222
+
223
+ if ( !set ) {
224
+ set = typeof context.getElementsByTagName !== "undefined" ?
225
+ context.getElementsByTagName( "*" ) :
226
+ [];
227
+ }
228
+
229
+ return { set: set, expr: expr };
230
+ };
231
+
232
+ Sizzle.filter = function( expr, set, inplace, not ) {
233
+ var match, anyFound,
234
+ old = expr,
235
+ result = [],
236
+ curLoop = set,
237
+ isXMLFilter = set && set[0] && Sizzle.isXML( set[0] );
238
+
239
+ while ( expr && set.length ) {
240
+ for ( var type in Expr.filter ) {
241
+ if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
242
+ var found, item,
243
+ filter = Expr.filter[ type ],
244
+ left = match[1];
245
+
246
+ anyFound = false;
247
+
248
+ match.splice(1,1);
249
+
250
+ if ( left.substr( left.length - 1 ) === "\\" ) {
251
+ continue;
252
+ }
253
+
254
+ if ( curLoop === result ) {
255
+ result = [];
256
+ }
257
+
258
+ if ( Expr.preFilter[ type ] ) {
259
+ match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
260
+
261
+ if ( !match ) {
262
+ anyFound = found = true;
263
+
264
+ } else if ( match === true ) {
265
+ continue;
266
+ }
267
+ }
268
+
269
+ if ( match ) {
270
+ for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
271
+ if ( item ) {
272
+ found = filter( item, match, i, curLoop );
273
+ var pass = not ^ !!found;
274
+
275
+ if ( inplace && found != null ) {
276
+ if ( pass ) {
277
+ anyFound = true;
278
+
279
+ } else {
280
+ curLoop[i] = false;
281
+ }
282
+
283
+ } else if ( pass ) {
284
+ result.push( item );
285
+ anyFound = true;
286
+ }
287
+ }
288
+ }
289
+ }
290
+
291
+ if ( found !== undefined ) {
292
+ if ( !inplace ) {
293
+ curLoop = result;
294
+ }
295
+
296
+ expr = expr.replace( Expr.match[ type ], "" );
297
+
298
+ if ( !anyFound ) {
299
+ return [];
300
+ }
301
+
302
+ break;
303
+ }
304
+ }
305
+ }
306
+
307
+ // Improper expression
308
+ if ( expr === old ) {
309
+ if ( anyFound == null ) {
310
+ Sizzle.error( expr );
311
+
312
+ } else {
313
+ break;
314
+ }
315
+ }
316
+
317
+ old = expr;
318
+ }
319
+
320
+ return curLoop;
321
+ };
322
+
323
+ Sizzle.error = function( msg ) {
324
+ throw "Syntax error, unrecognized expression: " + msg;
325
+ };
326
+
327
+ var Expr = Sizzle.selectors = {
328
+ order: [ "ID", "NAME", "TAG" ],
329
+
330
+ match: {
331
+ ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
332
+ CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
333
+ NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,
334
+ ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,
335
+ TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,
336
+ CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,
337
+ POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,
338
+ PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
339
+ },
340
+
341
+ leftMatch: {},
342
+
343
+ attrMap: {
344
+ "class": "className",
345
+ "for": "htmlFor"
346
+ },
347
+
348
+ attrHandle: {
349
+ href: function( elem ) {
350
+ return elem.getAttribute( "href" );
351
+ }
352
+ },
353
+
354
+ relative: {
355
+ "+": function(checkSet, part){
356
+ var isPartStr = typeof part === "string",
357
+ isTag = isPartStr && !/\W/.test( part ),
358
+ isPartStrNotTag = isPartStr && !isTag;
359
+
360
+ if ( isTag ) {
361
+ part = part.toLowerCase();
362
+ }
363
+
364
+ for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
365
+ if ( (elem = checkSet[i]) ) {
366
+ while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
367
+
368
+ checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?
369
+ elem || false :
370
+ elem === part;
371
+ }
372
+ }
373
+
374
+ if ( isPartStrNotTag ) {
375
+ Sizzle.filter( part, checkSet, true );
376
+ }
377
+ },
378
+
379
+ ">": function( checkSet, part ) {
380
+ var elem,
381
+ isPartStr = typeof part === "string",
382
+ i = 0,
383
+ l = checkSet.length;
384
+
385
+ if ( isPartStr && !/\W/.test( part ) ) {
386
+ part = part.toLowerCase();
387
+
388
+ for ( ; i < l; i++ ) {
389
+ elem = checkSet[i];
390
+
391
+ if ( elem ) {
392
+ var parent = elem.parentNode;
393
+ checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;
394
+ }
395
+ }
396
+
397
+ } else {
398
+ for ( ; i < l; i++ ) {
399
+ elem = checkSet[i];
400
+
401
+ if ( elem ) {
402
+ checkSet[i] = isPartStr ?
403
+ elem.parentNode :
404
+ elem.parentNode === part;
405
+ }
406
+ }
407
+
408
+ if ( isPartStr ) {
409
+ Sizzle.filter( part, checkSet, true );
410
+ }
411
+ }
412
+ },
413
+
414
+ "": function(checkSet, part, isXML){
415
+ var nodeCheck,
416
+ doneName = done++,
417
+ checkFn = dirCheck;
418
+
419
+ if ( typeof part === "string" && !/\W/.test(part) ) {
420
+ part = part.toLowerCase();
421
+ nodeCheck = part;
422
+ checkFn = dirNodeCheck;
423
+ }
424
+
425
+ checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML );
426
+ },
427
+
428
+ "~": function( checkSet, part, isXML ) {
429
+ var nodeCheck,
430
+ doneName = done++,
431
+ checkFn = dirCheck;
432
+
433
+ if ( typeof part === "string" && !/\W/.test( part ) ) {
434
+ part = part.toLowerCase();
435
+ nodeCheck = part;
436
+ checkFn = dirNodeCheck;
437
+ }
438
+
439
+ checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML );
440
+ }
441
+ },
442
+
443
+ find: {
444
+ ID: function( match, context, isXML ) {
445
+ if ( typeof context.getElementById !== "undefined" && !isXML ) {
446
+ var m = context.getElementById(match[1]);
447
+ // Check parentNode to catch when Blackberry 4.6 returns
448
+ // nodes that are no longer in the document #6963
449
+ return m && m.parentNode ? [m] : [];
450
+ }
451
+ },
452
+
453
+ NAME: function( match, context ) {
454
+ if ( typeof context.getElementsByName !== "undefined" ) {
455
+ var ret = [],
456
+ results = context.getElementsByName( match[1] );
457
+
458
+ for ( var i = 0, l = results.length; i < l; i++ ) {
459
+ if ( results[i].getAttribute("name") === match[1] ) {
460
+ ret.push( results[i] );
461
+ }
462
+ }
463
+
464
+ return ret.length === 0 ? null : ret;
465
+ }
466
+ },
467
+
468
+ TAG: function( match, context ) {
469
+ if ( typeof context.getElementsByTagName !== "undefined" ) {
470
+ return context.getElementsByTagName( match[1] );
471
+ }
472
+ }
473
+ },
474
+ preFilter: {
475
+ CLASS: function( match, curLoop, inplace, result, not, isXML ) {
476
+ match = " " + match[1].replace(/\\/g, "") + " ";
477
+
478
+ if ( isXML ) {
479
+ return match;
480
+ }
481
+
482
+ for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
483
+ if ( elem ) {
484
+ if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) {
485
+ if ( !inplace ) {
486
+ result.push( elem );
487
+ }
488
+
489
+ } else if ( inplace ) {
490
+ curLoop[i] = false;
491
+ }
492
+ }
493
+ }
494
+
495
+ return false;
496
+ },
497
+
498
+ ID: function( match ) {
499
+ return match[1].replace(/\\/g, "");
500
+ },
501
+
502
+ TAG: function( match, curLoop ) {
503
+ return match[1].toLowerCase();
504
+ },
505
+
506
+ CHILD: function( match ) {
507
+ if ( match[1] === "nth" ) {
508
+ if ( !match[2] ) {
509
+ Sizzle.error( match[0] );
510
+ }
511
+
512
+ match[2] = match[2].replace(/^\+|\s*/g, '');
513
+
514
+ // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
515
+ var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec(
516
+ match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||
517
+ !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
518
+
519
+ // calculate the numbers (first)n+(last) including if they are negative
520
+ match[2] = (test[1] + (test[2] || 1)) - 0;
521
+ match[3] = test[3] - 0;
522
+ }
523
+ else if ( match[2] ) {
524
+ Sizzle.error( match[0] );
525
+ }
526
+
527
+ // TODO: Move to normal caching system
528
+ match[0] = done++;
529
+
530
+ return match;
531
+ },
532
+
533
+ ATTR: function( match, curLoop, inplace, result, not, isXML ) {
534
+ var name = match[1] = match[1].replace(/\\/g, "");
535
+
536
+ if ( !isXML && Expr.attrMap[name] ) {
537
+ match[1] = Expr.attrMap[name];
538
+ }
539
+
540
+ // Handle if an un-quoted value was used
541
+ match[4] = ( match[4] || match[5] || "" ).replace(/\\/g, "");
542
+
543
+ if ( match[2] === "~=" ) {
544
+ match[4] = " " + match[4] + " ";
545
+ }
546
+
547
+ return match;
548
+ },
549
+
550
+ PSEUDO: function( match, curLoop, inplace, result, not ) {
551
+ if ( match[1] === "not" ) {
552
+ // If we're dealing with a complex expression, or a simple one
553
+ if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
554
+ match[3] = Sizzle(match[3], null, null, curLoop);
555
+
556
+ } else {
557
+ var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
558
+
559
+ if ( !inplace ) {
560
+ result.push.apply( result, ret );
561
+ }
562
+
563
+ return false;
564
+ }
565
+
566
+ } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
567
+ return true;
568
+ }
569
+
570
+ return match;
571
+ },
572
+
573
+ POS: function( match ) {
574
+ match.unshift( true );
575
+
576
+ return match;
577
+ }
578
+ },
579
+
580
+ filters: {
581
+ enabled: function( elem ) {
582
+ return elem.disabled === false && elem.type !== "hidden";
583
+ },
584
+
585
+ disabled: function( elem ) {
586
+ return elem.disabled === true;
587
+ },
588
+
589
+ checked: function( elem ) {
590
+ return elem.checked === true;
591
+ },
592
+
593
+ selected: function( elem ) {
594
+ // Accessing this property makes selected-by-default
595
+ // options in Safari work properly
596
+ elem.parentNode.selectedIndex;
597
+
598
+ return elem.selected === true;
599
+ },
600
+
601
+ parent: function( elem ) {
602
+ return !!elem.firstChild;
603
+ },
604
+
605
+ empty: function( elem ) {
606
+ return !elem.firstChild;
607
+ },
608
+
609
+ has: function( elem, i, match ) {
610
+ return !!Sizzle( match[3], elem ).length;
611
+ },
612
+
613
+ header: function( elem ) {
614
+ return (/h\d/i).test( elem.nodeName );
615
+ },
616
+
617
+ text: function( elem ) {
618
+ return "text" === elem.type;
619
+ },
620
+ radio: function( elem ) {
621
+ return "radio" === elem.type;
622
+ },
623
+
624
+ checkbox: function( elem ) {
625
+ return "checkbox" === elem.type;
626
+ },
627
+
628
+ file: function( elem ) {
629
+ return "file" === elem.type;
630
+ },
631
+ password: function( elem ) {
632
+ return "password" === elem.type;
633
+ },
634
+
635
+ submit: function( elem ) {
636
+ return "submit" === elem.type;
637
+ },
638
+
639
+ image: function( elem ) {
640
+ return "image" === elem.type;
641
+ },
642
+
643
+ reset: function( elem ) {
644
+ return "reset" === elem.type;
645
+ },
646
+
647
+ button: function( elem ) {
648
+ return "button" === elem.type || elem.nodeName.toLowerCase() === "button";
649
+ },
650
+
651
+ input: function( elem ) {
652
+ return (/input|select|textarea|button/i).test( elem.nodeName );
653
+ }
654
+ },
655
+ setFilters: {
656
+ first: function( elem, i ) {
657
+ return i === 0;
658
+ },
659
+
660
+ last: function( elem, i, match, array ) {
661
+ return i === array.length - 1;
662
+ },
663
+
664
+ even: function( elem, i ) {
665
+ return i % 2 === 0;
666
+ },
667
+
668
+ odd: function( elem, i ) {
669
+ return i % 2 === 1;
670
+ },
671
+
672
+ lt: function( elem, i, match ) {
673
+ return i < match[3] - 0;
674
+ },
675
+
676
+ gt: function( elem, i, match ) {
677
+ return i > match[3] - 0;
678
+ },
679
+
680
+ nth: function( elem, i, match ) {
681
+ return match[3] - 0 === i;
682
+ },
683
+
684
+ eq: function( elem, i, match ) {
685
+ return match[3] - 0 === i;
686
+ }
687
+ },
688
+ filter: {
689
+ PSEUDO: function( elem, match, i, array ) {
690
+ var name = match[1],
691
+ filter = Expr.filters[ name ];
692
+
693
+ if ( filter ) {
694
+ return filter( elem, i, match, array );
695
+
696
+ } else if ( name === "contains" ) {
697
+ return (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || "").indexOf(match[3]) >= 0;
698
+
699
+ } else if ( name === "not" ) {
700
+ var not = match[3];
701
+
702
+ for ( var j = 0, l = not.length; j < l; j++ ) {
703
+ if ( not[j] === elem ) {
704
+ return false;
705
+ }
706
+ }
707
+
708
+ return true;
709
+
710
+ } else {
711
+ Sizzle.error( name );
712
+ }
713
+ },
714
+
715
+ CHILD: function( elem, match ) {
716
+ var type = match[1],
717
+ node = elem;
718
+
719
+ switch ( type ) {
720
+ case "only":
721
+ case "first":
722
+ while ( (node = node.previousSibling) ) {
723
+ if ( node.nodeType === 1 ) {
724
+ return false;
725
+ }
726
+ }
727
+
728
+ if ( type === "first" ) {
729
+ return true;
730
+ }
731
+
732
+ node = elem;
733
+
734
+ case "last":
735
+ while ( (node = node.nextSibling) ) {
736
+ if ( node.nodeType === 1 ) {
737
+ return false;
738
+ }
739
+ }
740
+
741
+ return true;
742
+
743
+ case "nth":
744
+ var first = match[2],
745
+ last = match[3];
746
+
747
+ if ( first === 1 && last === 0 ) {
748
+ return true;
749
+ }
750
+
751
+ var doneName = match[0],
752
+ parent = elem.parentNode;
753
+
754
+ if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
755
+ var count = 0;
756
+
757
+ for ( node = parent.firstChild; node; node = node.nextSibling ) {
758
+ if ( node.nodeType === 1 ) {
759
+ node.nodeIndex = ++count;
760
+ }
761
+ }
762
+
763
+ parent.sizcache = doneName;
764
+ }
765
+
766
+ var diff = elem.nodeIndex - last;
767
+
768
+ if ( first === 0 ) {
769
+ return diff === 0;
770
+
771
+ } else {
772
+ return ( diff % first === 0 && diff / first >= 0 );
773
+ }
774
+ }
775
+ },
776
+
777
+ ID: function( elem, match ) {
778
+ return elem.nodeType === 1 && elem.getAttribute("id") === match;
779
+ },
780
+
781
+ TAG: function( elem, match ) {
782
+ return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;
783
+ },
784
+
785
+ CLASS: function( elem, match ) {
786
+ return (" " + (elem.className || elem.getAttribute("class")) + " ")
787
+ .indexOf( match ) > -1;
788
+ },
789
+
790
+ ATTR: function( elem, match ) {
791
+ var name = match[1],
792
+ result = Expr.attrHandle[ name ] ?
793
+ Expr.attrHandle[ name ]( elem ) :
794
+ elem[ name ] != null ?
795
+ elem[ name ] :
796
+ elem.getAttribute( name ),
797
+ value = result + "",
798
+ type = match[2],
799
+ check = match[4];
800
+
801
+ return result == null ?
802
+ type === "!=" :
803
+ type === "=" ?
804
+ value === check :
805
+ type === "*=" ?
806
+ value.indexOf(check) >= 0 :
807
+ type === "~=" ?
808
+ (" " + value + " ").indexOf(check) >= 0 :
809
+ !check ?
810
+ value && result !== false :
811
+ type === "!=" ?
812
+ value !== check :
813
+ type === "^=" ?
814
+ value.indexOf(check) === 0 :
815
+ type === "$=" ?
816
+ value.substr(value.length - check.length) === check :
817
+ type === "|=" ?
818
+ value === check || value.substr(0, check.length + 1) === check + "-" :
819
+ false;
820
+ },
821
+
822
+ POS: function( elem, match, i, array ) {
823
+ var name = match[2],
824
+ filter = Expr.setFilters[ name ];
825
+
826
+ if ( filter ) {
827
+ return filter( elem, i, match, array );
828
+ }
829
+ }
830
+ }
831
+ };
832
+
833
+ var origPOS = Expr.match.POS,
834
+ fescape = function(all, num){
835
+ return "\\" + (num - 0 + 1);
836
+ };
837
+
838
+ for ( var type in Expr.match ) {
839
+ Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) );
840
+ Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) );
841
+ }
842
+
843
+ var makeArray = function( array, results ) {
844
+ array = Array.prototype.slice.call( array, 0 );
845
+
846
+ if ( results ) {
847
+ results.push.apply( results, array );
848
+ return results;
849
+ }
850
+
851
+ return array;
852
+ };
853
+
854
+ // Perform a simple check to determine if the browser is capable of
855
+ // converting a NodeList to an array using builtin methods.
856
+ // Also verifies that the returned array holds DOM nodes
857
+ // (which is not the case in the Blackberry browser)
858
+ try {
859
+ Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
860
+
861
+ // Provide a fallback method if it does not work
862
+ } catch( e ) {
863
+ makeArray = function( array, results ) {
864
+ var i = 0,
865
+ ret = results || [];
866
+
867
+ if ( toString.call(array) === "[object Array]" ) {
868
+ Array.prototype.push.apply( ret, array );
869
+
870
+ } else {
871
+ if ( typeof array.length === "number" ) {
872
+ for ( var l = array.length; i < l; i++ ) {
873
+ ret.push( array[i] );
874
+ }
875
+
876
+ } else {
877
+ for ( ; array[i]; i++ ) {
878
+ ret.push( array[i] );
879
+ }
880
+ }
881
+ }
882
+
883
+ return ret;
884
+ };
885
+ }
886
+
887
+ var sortOrder, siblingCheck;
888
+
889
+ if ( document.documentElement.compareDocumentPosition ) {
890
+ sortOrder = function( a, b ) {
891
+ if ( a === b ) {
892
+ hasDuplicate = true;
893
+ return 0;
894
+ }
895
+
896
+ if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
897
+ return a.compareDocumentPosition ? -1 : 1;
898
+ }
899
+
900
+ return a.compareDocumentPosition(b) & 4 ? -1 : 1;
901
+ };
902
+
903
+ } else {
904
+ sortOrder = function( a, b ) {
905
+ var al, bl,
906
+ ap = [],
907
+ bp = [],
908
+ aup = a.parentNode,
909
+ bup = b.parentNode,
910
+ cur = aup;
911
+
912
+ // The nodes are identical, we can exit early
913
+ if ( a === b ) {
914
+ hasDuplicate = true;
915
+ return 0;
916
+
917
+ // If the nodes are siblings (or identical) we can do a quick check
918
+ } else if ( aup === bup ) {
919
+ return siblingCheck( a, b );
920
+
921
+ // If no parents were found then the nodes are disconnected
922
+ } else if ( !aup ) {
923
+ return -1;
924
+
925
+ } else if ( !bup ) {
926
+ return 1;
927
+ }
928
+
929
+ // Otherwise they're somewhere else in the tree so we need
930
+ // to build up a full list of the parentNodes for comparison
931
+ while ( cur ) {
932
+ ap.unshift( cur );
933
+ cur = cur.parentNode;
934
+ }
935
+
936
+ cur = bup;
937
+
938
+ while ( cur ) {
939
+ bp.unshift( cur );
940
+ cur = cur.parentNode;
941
+ }
942
+
943
+ al = ap.length;
944
+ bl = bp.length;
945
+
946
+ // Start walking down the tree looking for a discrepancy
947
+ for ( var i = 0; i < al && i < bl; i++ ) {
948
+ if ( ap[i] !== bp[i] ) {
949
+ return siblingCheck( ap[i], bp[i] );
950
+ }
951
+ }
952
+
953
+ // We ended someplace up the tree so do a sibling check
954
+ return i === al ?
955
+ siblingCheck( a, bp[i], -1 ) :
956
+ siblingCheck( ap[i], b, 1 );
957
+ };
958
+
959
+ siblingCheck = function( a, b, ret ) {
960
+ if ( a === b ) {
961
+ return ret;
962
+ }
963
+
964
+ var cur = a.nextSibling;
965
+
966
+ while ( cur ) {
967
+ if ( cur === b ) {
968
+ return -1;
969
+ }
970
+
971
+ cur = cur.nextSibling;
972
+ }
973
+
974
+ return 1;
975
+ };
976
+ }
977
+
978
+ // Utility function for retreiving the text value of an array of DOM nodes
979
+ Sizzle.getText = function( elems ) {
980
+ var ret = "", elem;
981
+
982
+ for ( var i = 0; elems[i]; i++ ) {
983
+ elem = elems[i];
984
+
985
+ // Get the text from text nodes and CDATA nodes
986
+ if ( elem.nodeType === 3 || elem.nodeType === 4 ) {
987
+ ret += elem.nodeValue;
988
+
989
+ // Traverse everything else, except comment nodes
990
+ } else if ( elem.nodeType !== 8 ) {
991
+ ret += Sizzle.getText( elem.childNodes );
992
+ }
993
+ }
994
+
995
+ return ret;
996
+ };
997
+
998
+ // Check to see if the browser returns elements by name when
999
+ // querying by getElementById (and provide a workaround)
1000
+ (function(){
1001
+ // We're going to inject a fake input element with a specified name
1002
+ var form = document.createElement("div"),
1003
+ id = "script" + (new Date()).getTime(),
1004
+ root = document.documentElement;
1005
+
1006
+ form.innerHTML = "<a name='" + id + "'/>";
1007
+
1008
+ // Inject it into the root element, check its status, and remove it quickly
1009
+ root.insertBefore( form, root.firstChild );
1010
+
1011
+ // The workaround has to do additional checks after a getElementById
1012
+ // Which slows things down for other browsers (hence the branching)
1013
+ if ( document.getElementById( id ) ) {
1014
+ Expr.find.ID = function( match, context, isXML ) {
1015
+ if ( typeof context.getElementById !== "undefined" && !isXML ) {
1016
+ var m = context.getElementById(match[1]);
1017
+
1018
+ return m ?
1019
+ m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ?
1020
+ [m] :
1021
+ undefined :
1022
+ [];
1023
+ }
1024
+ };
1025
+
1026
+ Expr.filter.ID = function( elem, match ) {
1027
+ var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
1028
+
1029
+ return elem.nodeType === 1 && node && node.nodeValue === match;
1030
+ };
1031
+ }
1032
+
1033
+ root.removeChild( form );
1034
+
1035
+ // release memory in IE
1036
+ root = form = null;
1037
+ })();
1038
+
1039
+ (function(){
1040
+ // Check to see if the browser returns only elements
1041
+ // when doing getElementsByTagName("*")
1042
+
1043
+ // Create a fake element
1044
+ var div = document.createElement("div");
1045
+ div.appendChild( document.createComment("") );
1046
+
1047
+ // Make sure no comments are found
1048
+ if ( div.getElementsByTagName("*").length > 0 ) {
1049
+ Expr.find.TAG = function( match, context ) {
1050
+ var results = context.getElementsByTagName( match[1] );
1051
+
1052
+ // Filter out possible comments
1053
+ if ( match[1] === "*" ) {
1054
+ var tmp = [];
1055
+
1056
+ for ( var i = 0; results[i]; i++ ) {
1057
+ if ( results[i].nodeType === 1 ) {
1058
+ tmp.push( results[i] );
1059
+ }
1060
+ }
1061
+
1062
+ results = tmp;
1063
+ }
1064
+
1065
+ return results;
1066
+ };
1067
+ }
1068
+
1069
+ // Check to see if an attribute returns normalized href attributes
1070
+ div.innerHTML = "<a href='#'></a>";
1071
+
1072
+ if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
1073
+ div.firstChild.getAttribute("href") !== "#" ) {
1074
+
1075
+ Expr.attrHandle.href = function( elem ) {
1076
+ return elem.getAttribute( "href", 2 );
1077
+ };
1078
+ }
1079
+
1080
+ // release memory in IE
1081
+ div = null;
1082
+ })();
1083
+
1084
+ if ( document.querySelectorAll ) {
1085
+ (function(){
1086
+ var oldSizzle = Sizzle,
1087
+ div = document.createElement("div"),
1088
+ id = "__sizzle__";
1089
+
1090
+ div.innerHTML = "<p class='TEST'></p>";
1091
+
1092
+ // Safari can't handle uppercase or unicode characters when
1093
+ // in quirks mode.
1094
+ if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
1095
+ return;
1096
+ }
1097
+
1098
+ Sizzle = function( query, context, extra, seed ) {
1099
+ context = context || document;
1100
+
1101
+ // Only use querySelectorAll on non-XML documents
1102
+ // (ID selectors don't work in non-HTML documents)
1103
+ if ( !seed && !Sizzle.isXML(context) ) {
1104
+ // See if we find a selector to speed up
1105
+ var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query );
1106
+
1107
+ if ( match && (context.nodeType === 1 || context.nodeType === 9) ) {
1108
+ // Speed-up: Sizzle("TAG")
1109
+ if ( match[1] ) {
1110
+ return makeArray( context.getElementsByTagName( query ), extra );
1111
+
1112
+ // Speed-up: Sizzle(".CLASS")
1113
+ } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {
1114
+ return makeArray( context.getElementsByClassName( match[2] ), extra );
1115
+ }
1116
+ }
1117
+
1118
+ if ( context.nodeType === 9 ) {
1119
+ // Speed-up: Sizzle("body")
1120
+ // The body element only exists once, optimize finding it
1121
+ if ( query === "body" && context.body ) {
1122
+ return makeArray( [ context.body ], extra );
1123
+
1124
+ // Speed-up: Sizzle("#ID")
1125
+ } else if ( match && match[3] ) {
1126
+ var elem = context.getElementById( match[3] );
1127
+
1128
+ // Check parentNode to catch when Blackberry 4.6 returns
1129
+ // nodes that are no longer in the document #6963
1130
+ if ( elem && elem.parentNode ) {
1131
+ // Handle the case where IE and Opera return items
1132
+ // by name instead of ID
1133
+ if ( elem.id === match[3] ) {
1134
+ return makeArray( [ elem ], extra );
1135
+ }
1136
+
1137
+ } else {
1138
+ return makeArray( [], extra );
1139
+ }
1140
+ }
1141
+
1142
+ try {
1143
+ return makeArray( context.querySelectorAll(query), extra );
1144
+ } catch(qsaError) {}
1145
+
1146
+ // qSA works strangely on Element-rooted queries
1147
+ // We can work around this by specifying an extra ID on the root
1148
+ // and working up from there (Thanks to Andrew Dupont for the technique)
1149
+ // IE 8 doesn't work on object elements
1150
+ } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
1151
+ var old = context.getAttribute( "id" ),
1152
+ nid = old || id,
1153
+ hasParent = context.parentNode,
1154
+ relativeHierarchySelector = /^\s*[+~]/.test( query );
1155
+
1156
+ if ( !old ) {
1157
+ context.setAttribute( "id", nid );
1158
+ } else {
1159
+ nid = nid.replace( /'/g, "\\$&" );
1160
+ }
1161
+ if ( relativeHierarchySelector && hasParent ) {
1162
+ context = context.parentNode;
1163
+ }
1164
+
1165
+ try {
1166
+ if ( !relativeHierarchySelector || hasParent ) {
1167
+ return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra );
1168
+ }
1169
+
1170
+ } catch(pseudoError) {
1171
+ } finally {
1172
+ if ( !old ) {
1173
+ context.removeAttribute( "id" );
1174
+ }
1175
+ }
1176
+ }
1177
+ }
1178
+
1179
+ return oldSizzle(query, context, extra, seed);
1180
+ };
1181
+
1182
+ for ( var prop in oldSizzle ) {
1183
+ Sizzle[ prop ] = oldSizzle[ prop ];
1184
+ }
1185
+
1186
+ // release memory in IE
1187
+ div = null;
1188
+ })();
1189
+ }
1190
+
1191
+ (function(){
1192
+ var html = document.documentElement,
1193
+ matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector,
1194
+ pseudoWorks = false;
1195
+
1196
+ try {
1197
+ // This should fail with an exception
1198
+ // Gecko does not error, returns false instead
1199
+ matches.call( document.documentElement, "[test!='']:sizzle" );
1200
+
1201
+ } catch( pseudoError ) {
1202
+ pseudoWorks = true;
1203
+ }
1204
+
1205
+ if ( matches ) {
1206
+ Sizzle.matchesSelector = function( node, expr ) {
1207
+ // Make sure that attribute selectors are quoted
1208
+ expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']");
1209
+
1210
+ if ( !Sizzle.isXML( node ) ) {
1211
+ try {
1212
+ if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {
1213
+ return matches.call( node, expr );
1214
+ }
1215
+ } catch(e) {}
1216
+ }
1217
+
1218
+ return Sizzle(expr, null, null, [node]).length > 0;
1219
+ };
1220
+ }
1221
+ })();
1222
+
1223
+ (function(){
1224
+ var div = document.createElement("div");
1225
+
1226
+ div.innerHTML = "<div class='test e'></div><div class='test'></div>";
1227
+
1228
+ // Opera can't find a second classname (in 9.6)
1229
+ // Also, make sure that getElementsByClassName actually exists
1230
+ if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) {
1231
+ return;
1232
+ }
1233
+
1234
+ // Safari caches class attributes, doesn't catch changes (in 3.2)
1235
+ div.lastChild.className = "e";
1236
+
1237
+ if ( div.getElementsByClassName("e").length === 1 ) {
1238
+ return;
1239
+ }
1240
+
1241
+ Expr.order.splice(1, 0, "CLASS");
1242
+ Expr.find.CLASS = function( match, context, isXML ) {
1243
+ if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
1244
+ return context.getElementsByClassName(match[1]);
1245
+ }
1246
+ };
1247
+
1248
+ // release memory in IE
1249
+ div = null;
1250
+ })();
1251
+
1252
+ function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
1253
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
1254
+ var elem = checkSet[i];
1255
+
1256
+ if ( elem ) {
1257
+ var match = false;
1258
+
1259
+ elem = elem[dir];
1260
+
1261
+ while ( elem ) {
1262
+ if ( elem.sizcache === doneName ) {
1263
+ match = checkSet[elem.sizset];
1264
+ break;
1265
+ }
1266
+
1267
+ if ( elem.nodeType === 1 && !isXML ){
1268
+ elem.sizcache = doneName;
1269
+ elem.sizset = i;
1270
+ }
1271
+
1272
+ if ( elem.nodeName.toLowerCase() === cur ) {
1273
+ match = elem;
1274
+ break;
1275
+ }
1276
+
1277
+ elem = elem[dir];
1278
+ }
1279
+
1280
+ checkSet[i] = match;
1281
+ }
1282
+ }
1283
+ }
1284
+
1285
+ function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
1286
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
1287
+ var elem = checkSet[i];
1288
+
1289
+ if ( elem ) {
1290
+ var match = false;
1291
+
1292
+ elem = elem[dir];
1293
+
1294
+ while ( elem ) {
1295
+ if ( elem.sizcache === doneName ) {
1296
+ match = checkSet[elem.sizset];
1297
+ break;
1298
+ }
1299
+
1300
+ if ( elem.nodeType === 1 ) {
1301
+ if ( !isXML ) {
1302
+ elem.sizcache = doneName;
1303
+ elem.sizset = i;
1304
+ }
1305
+
1306
+ if ( typeof cur !== "string" ) {
1307
+ if ( elem === cur ) {
1308
+ match = true;
1309
+ break;
1310
+ }
1311
+
1312
+ } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
1313
+ match = elem;
1314
+ break;
1315
+ }
1316
+ }
1317
+
1318
+ elem = elem[dir];
1319
+ }
1320
+
1321
+ checkSet[i] = match;
1322
+ }
1323
+ }
1324
+ }
1325
+
1326
+ if ( document.documentElement.contains ) {
1327
+ Sizzle.contains = function( a, b ) {
1328
+ return a !== b && (a.contains ? a.contains(b) : true);
1329
+ };
1330
+
1331
+ } else if ( document.documentElement.compareDocumentPosition ) {
1332
+ Sizzle.contains = function( a, b ) {
1333
+ return !!(a.compareDocumentPosition(b) & 16);
1334
+ };
1335
+
1336
+ } else {
1337
+ Sizzle.contains = function() {
1338
+ return false;
1339
+ };
1340
+ }
1341
+
1342
+ Sizzle.isXML = function( elem ) {
1343
+ // documentElement is verified for cases where it doesn't yet exist
1344
+ // (such as loading iframes in IE - #4833)
1345
+ var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;
1346
+
1347
+ return documentElement ? documentElement.nodeName !== "HTML" : false;
1348
+ };
1349
+
1350
+ var posProcess = function( selector, context ) {
1351
+ var match,
1352
+ tmpSet = [],
1353
+ later = "",
1354
+ root = context.nodeType ? [context] : context;
1355
+
1356
+ // Position selectors must be done after the filter
1357
+ // And so must :not(positional) so we move all PSEUDOs to the end
1358
+ while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
1359
+ later += match[0];
1360
+ selector = selector.replace( Expr.match.PSEUDO, "" );
1361
+ }
1362
+
1363
+ selector = Expr.relative[selector] ? selector + "*" : selector;
1364
+
1365
+ for ( var i = 0, l = root.length; i < l; i++ ) {
1366
+ Sizzle( selector, root[i], tmpSet );
1367
+ }
1368
+
1369
+ return Sizzle.filter( later, tmpSet );
1370
+ };
1371
+
1372
+ // EXPOSE
1373
+
1374
+ window.Sizzle = Sizzle;
1375
+
1376
+ })();