Skip to content
Browse files

managing waves on single canvas, collision on NSWE borders, sound on …

…collision
  • Loading branch information...
1 parent 260a185 commit e855bbf33fd6b51c4c62841d59c4a570cf3a72ef @Fabryz committed Mar 3, 2013
Showing with 19,571 additions and 27 deletions.
  1. +8 −1 TODO
  2. BIN public/audio/bounce.ogg
  3. BIN public/audio/cuorizini.mp3
  4. +129 −23 public/js/Mangonel.js
  5. +103 −0 public/js/Wave.js
  6. +13 −3 public/js/main.js
  7. +78 −0 public/js/soundmanager2-nodebug-jsmin.js
  8. +71 −0 public/soundmanagerv297a-20130101/README.rdoc
  9. BIN public/soundmanagerv297a-20130101/demo/360-player/360 button - large.psd
  10. BIN public/soundmanagerv297a-20130101/demo/360-player/360 button.psd
  11. BIN public/soundmanagerv297a-20130101/demo/360-player/360-button-pause-light.gif
  12. BIN public/soundmanagerv297a-20130101/demo/360-player/360-button-pause-light.png
  13. BIN public/soundmanagerv297a-20130101/demo/360-player/360-button-pause.gif
  14. BIN public/soundmanagerv297a-20130101/demo/360-player/360-button-pause.png
  15. BIN public/soundmanagerv297a-20130101/demo/360-player/360-button-play-light.gif
  16. BIN public/soundmanagerv297a-20130101/demo/360-player/360-button-play-light.png
  17. BIN public/soundmanagerv297a-20130101/demo/360-player/360-button-play.gif
  18. BIN public/soundmanagerv297a-20130101/demo/360-player/360-button-play.png
  19. BIN public/soundmanagerv297a-20130101/demo/360-player/360-button-vis-pause-light.gif
  20. BIN public/soundmanagerv297a-20130101/demo/360-player/360-button-vis-pause-light.png
  21. BIN public/soundmanagerv297a-20130101/demo/360-player/360-button-vis-pause.gif
  22. BIN public/soundmanagerv297a-20130101/demo/360-player/360-button-vis-pause.png
  23. BIN public/soundmanagerv297a-20130101/demo/360-player/360-button-vis-play-light.gif
  24. BIN public/soundmanagerv297a-20130101/demo/360-player/360-button-vis-play-light.png
  25. BIN public/soundmanagerv297a-20130101/demo/360-player/360-button-vis-play.gif
  26. BIN public/soundmanagerv297a-20130101/demo/360-player/360-button-vis-play.png
  27. +156 −0 public/soundmanagerv297a-20130101/demo/360-player/360player-visualization.css
  28. +271 −0 public/soundmanagerv297a-20130101/demo/360-player/360player.css
  29. +132 −0 public/soundmanagerv297a-20130101/demo/360-player/canvas-visualization-basic.html
  30. +359 −0 public/soundmanagerv297a-20130101/demo/360-player/canvas-visualization.html
  31. +179 −0 public/soundmanagerv297a-20130101/demo/360-player/demo-slider-controls.css
  32. +750 −0 public/soundmanagerv297a-20130101/demo/360-player/demo-slider-controls.js
  33. +64 −0 public/soundmanagerv297a-20130101/demo/360-player/demo.css
  34. BIN public/soundmanagerv297a-20130101/demo/360-player/icon_loading_dots.gif
  35. BIN public/soundmanagerv297a-20130101/demo/360-player/icon_loading_spinner.gif
  36. BIN public/soundmanagerv297a-20130101/demo/360-player/icon_loading_spinner_bigger.gif
  37. +173 −0 public/soundmanagerv297a-20130101/demo/360-player/index.html
  38. +1,395 −0 public/soundmanagerv297a-20130101/demo/360-player/script/360player.js
  39. +674 −0 public/soundmanagerv297a-20130101/demo/360-player/script/berniecode-animator.js
  40. +17 −0 public/soundmanagerv297a-20130101/demo/360-player/script/excanvas.js
  41. BIN public/soundmanagerv297a-20130101/demo/_image/360ui-screenshot1.png
  42. BIN public/soundmanagerv297a-20130101/demo/_image/360ui-screenshot2.png
  43. BIN public/soundmanagerv297a-20130101/demo/_image/360ui-screenshot3.png
  44. BIN public/soundmanagerv297a-20130101/demo/_image/360ui-screenshot4.png
  45. BIN public/soundmanagerv297a-20130101/demo/_image/cassette-tape-ui-screenshot.jpg
  46. BIN public/soundmanagerv297a-20130101/demo/_image/cassette-tape-ui-screenshot.png
  47. BIN public/soundmanagerv297a-20130101/demo/_image/christmas-lights.jpg
  48. BIN public/soundmanagerv297a-20130101/demo/_image/christmas-lights.png
  49. +127 −0 public/soundmanagerv297a-20130101/demo/_image/chunk-webfont.svg
  50. BIN public/soundmanagerv297a-20130101/demo/_image/chunk-webfont.ttf
  51. BIN public/soundmanagerv297a-20130101/demo/_image/chunk-webfont.woff
  52. BIN public/soundmanagerv297a-20130101/demo/_image/dejavusansmono-webfont.eot
  53. BIN public/soundmanagerv297a-20130101/demo/_image/dejavusansmono-webfont.woff
  54. BIN public/soundmanagerv297a-20130101/demo/_image/fitter-happier-waveform.jpg
  55. BIN public/soundmanagerv297a-20130101/demo/_image/fitter-happier-waveform.png
  56. BIN public/soundmanagerv297a-20130101/demo/_image/flash9-dark.png
  57. BIN public/soundmanagerv297a-20130101/demo/_image/flash9.png
  58. BIN public/soundmanagerv297a-20130101/demo/_image/getsatisfaction-icon.gif
  59. BIN public/soundmanagerv297a-20130101/demo/_image/glyphish-dot-com-icons-and-android-sprite.png
  60. BIN public/soundmanagerv297a-20130101/demo/_image/hue_thumb.png
  61. BIN public/soundmanagerv297a-20130101/demo/_image/logo-sprite.png
  62. BIN public/soundmanagerv297a-20130101/demo/_image/mpc-screenshot.png
  63. BIN public/soundmanagerv297a-20130101/demo/_image/muxtape-logo.png
  64. BIN public/soundmanagerv297a-20130101/demo/_image/new-bw.png
  65. BIN public/soundmanagerv297a-20130101/demo/_image/new-dark.png
  66. BIN public/soundmanagerv297a-20130101/demo/_image/new.png
  67. BIN public/soundmanagerv297a-20130101/demo/_image/noise-dark.png
  68. BIN public/soundmanagerv297a-20130101/demo/_image/noise.png
  69. BIN public/soundmanagerv297a-20130101/demo/_image/picker_thumb.png
  70. BIN public/soundmanagerv297a-20130101/demo/_image/slider-1.png
  71. BIN public/soundmanagerv297a-20130101/demo/_image/slider-bar.gif
  72. BIN public/soundmanagerv297a-20130101/demo/_image/slider.png
  73. BIN public/soundmanagerv297a-20130101/demo/_image/soundmanager2-speaker.png
  74. BIN public/soundmanagerv297a-20130101/demo/_image/speaker.png
  75. BIN public/soundmanagerv297a-20130101/demo/_image/survivor-screenshot.png
  76. BIN public/soundmanagerv297a-20130101/demo/_image/tiny_grid.png
  77. BIN public/soundmanagerv297a-20130101/demo/_image/wedge.png
  78. BIN public/soundmanagerv297a-20130101/demo/_image/wheelsofsteel-full-ui.jpg
  79. BIN public/soundmanagerv297a-20130101/demo/_image/wheelsofsteel-full-ui.png
  80. BIN public/soundmanagerv297a-20130101/demo/_image/wheelsofsteel-single-deck-256.jpg
  81. BIN public/soundmanagerv297a-20130101/demo/_mp3/1hz-10khz-sweep.mp3
  82. BIN public/soundmanagerv297a-20130101/demo/_mp3/440hz.mp3
  83. BIN public/soundmanagerv297a-20130101/demo/_mp3/880hz.mp3
  84. BIN public/soundmanagerv297a-20130101/demo/_mp3/background0.mp3
  85. BIN public/soundmanagerv297a-20130101/demo/_mp3/background1.mp3
  86. BIN public/soundmanagerv297a-20130101/demo/_mp3/background2.mp3
  87. BIN public/soundmanagerv297a-20130101/demo/_mp3/bass.mp3
  88. BIN public/soundmanagerv297a-20130101/demo/_mp3/button-0.mp3
  89. BIN public/soundmanagerv297a-20130101/demo/_mp3/button-1.mp3
  90. BIN public/soundmanagerv297a-20130101/demo/_mp3/click-high.mp3
  91. BIN public/soundmanagerv297a-20130101/demo/_mp3/click-low.mp3
  92. BIN public/soundmanagerv297a-20130101/demo/_mp3/coins.mp3
  93. BIN public/soundmanagerv297a-20130101/demo/_mp3/fancy-beer-bottle-pop.mp3
  94. BIN public/soundmanagerv297a-20130101/demo/_mp3/going_outside.mp3
  95. BIN public/soundmanagerv297a-20130101/demo/_mp3/mak.mp3
  96. BIN public/soundmanagerv297a-20130101/demo/_mp3/mouseover.mp3
  97. BIN public/soundmanagerv297a-20130101/demo/_mp3/mouseover2.mp3
  98. BIN public/soundmanagerv297a-20130101/demo/_mp3/mouseover3.mp3
  99. BIN public/soundmanagerv297a-20130101/demo/_mp3/office_lobby.mp3
  100. BIN public/soundmanagerv297a-20130101/demo/_mp3/rain.mp3
  101. BIN public/soundmanagerv297a-20130101/demo/_mp3/select.mp3
  102. BIN public/soundmanagerv297a-20130101/demo/_mp3/sine, square, sawtooth, rando.mp3
  103. BIN public/soundmanagerv297a-20130101/demo/_mp3/walking.mp3
  104. +74 −0 public/soundmanagerv297a-20130101/demo/animation-1/css/animation.css
  105. BIN public/soundmanagerv297a-20130101/demo/animation-1/image/ball.gif
  106. +46 −0 public/soundmanagerv297a-20130101/demo/animation-1/index.html
  107. +190 −0 public/soundmanagerv297a-20130101/demo/animation-1/script/animation.js
  108. BIN public/soundmanagerv297a-20130101/demo/animation-2a/bg-land.png
  109. BIN public/soundmanagerv297a-20130101/demo/animation-2a/bg-sky.png
  110. BIN public/soundmanagerv297a-20130101/demo/animation-2a/cursor-10.cur
  111. BIN public/soundmanagerv297a-20130101/demo/animation-2a/cursor-11.cur
  112. BIN public/soundmanagerv297a-20130101/demo/animation-2a/cursor-3.cur
  113. BIN public/soundmanagerv297a-20130101/demo/animation-2a/cursor-4.cur
  114. BIN public/soundmanagerv297a-20130101/demo/animation-2a/cursor-5.cur
  115. BIN public/soundmanagerv297a-20130101/demo/animation-2a/cursor-6.cur
  116. BIN public/soundmanagerv297a-20130101/demo/animation-2a/cursor-7.cur
  117. BIN public/soundmanagerv297a-20130101/demo/animation-2a/cursor-8.cur
  118. BIN public/soundmanagerv297a-20130101/demo/animation-2a/cursor-9.cur
  119. BIN public/soundmanagerv297a-20130101/demo/animation-2a/cursor-shadow.png
  120. BIN public/soundmanagerv297a-20130101/demo/animation-2a/dot.png
  121. +361 −0 public/soundmanagerv297a-20130101/demo/animation-2a/index.html
  122. BIN public/soundmanagerv297a-20130101/demo/animation-2b/audio/bonk.mp3
  123. BIN public/soundmanagerv297a-20130101/demo/animation-2b/audio/fingerplop.mp3
  124. BIN public/soundmanagerv297a-20130101/demo/animation-2b/audio/fingerplop2.mp3
  125. +36 −0 public/soundmanagerv297a-20130101/demo/animation-2b/css/animation.css
  126. BIN public/soundmanagerv297a-20130101/demo/animation-2b/image/ball.gif
  127. BIN public/soundmanagerv297a-20130101/demo/animation-2b/image/point.png
  128. +21 −0 public/soundmanagerv297a-20130101/demo/animation-2b/index.html
  129. +97 −0 public/soundmanagerv297a-20130101/demo/animation-2b/script/animation.js
  130. BIN public/soundmanagerv297a-20130101/demo/animation/audio/bonk.mp3
  131. BIN public/soundmanagerv297a-20130101/demo/animation/audio/fingerplop.mp3
  132. BIN public/soundmanagerv297a-20130101/demo/animation/audio/fingerplop2.mp3
  133. +55 −0 public/soundmanagerv297a-20130101/demo/animation/index.html
  134. +801 −0 public/soundmanagerv297a-20130101/demo/api/index.html
  135. +30 −0 public/soundmanagerv297a-20130101/demo/cassette-tape/css/cassette-tape-ui-blur-nojs.css
  136. +395 −0 public/soundmanagerv297a-20130101/demo/cassette-tape/css/cassette-tape-ui-blur.css
  137. +832 −0 public/soundmanagerv297a-20130101/demo/cassette-tape/css/cassette-tape-ui.css
  138. +368 −0 public/soundmanagerv297a-20130101/demo/cassette-tape/css/demo.css
  139. +202 −0 public/soundmanagerv297a-20130101/demo/cassette-tape/font/JustAnotherHand_ttf_font_LICENSE.txt
  140. BIN public/soundmanagerv297a-20130101/demo/cassette-tape/font/justanotherhand-webfont.eot
  141. BIN public/soundmanagerv297a-20130101/demo/cassette-tape/font/justanotherhand-webfont.ttf
  142. BIN public/soundmanagerv297a-20130101/demo/cassette-tape/font/justanotherhand-webfont.woff
  143. BIN public/soundmanagerv297a-20130101/demo/cassette-tape/font/ostrich-rounded-webfont.eot
  144. +141 −0 public/soundmanagerv297a-20130101/demo/cassette-tape/font/ostrich-rounded-webfont.svg
  145. BIN public/soundmanagerv297a-20130101/demo/cassette-tape/font/ostrich-rounded-webfont.ttf
  146. BIN public/soundmanagerv297a-20130101/demo/cassette-tape/font/ostrich-rounded-webfont.woff
  147. BIN public/soundmanagerv297a-20130101/demo/cassette-tape/image/_src/MA-R90 metal pattern.png
  148. BIN public/soundmanagerv297a-20130101/demo/cassette-tape/image/_src/TDK MA-R90 body.psd
  149. BIN public/soundmanagerv297a-20130101/demo/cassette-tape/image/_src/Tape Mask.psd
  150. BIN public/soundmanagerv297a-20130101/demo/cassette-tape/image/_src/metalspool.psd
  151. BIN public/soundmanagerv297a-20130101/demo/cassette-tape/image/_src/metalspoolblack.psd
  152. BIN public/soundmanagerv297a-20130101/demo/cassette-tape/image/_src/rail-middle-outline-edited.psd
  153. BIN public/soundmanagerv297a-20130101/demo/cassette-tape/image/_src/tape-screw-dark.psd
  154. BIN public/soundmanagerv297a-20130101/demo/cassette-tape/image/_src/tape-screw.psd
  155. BIN public/soundmanagerv297a-20130101/demo/cassette-tape/image/black-micro.png
  156. BIN public/soundmanagerv297a-20130101/demo/cassette-tape/image/body-texture-strips.png
  157. BIN public/soundmanagerv297a-20130101/demo/cassette-tape/image/demo_backgrounds/sfatnight_1600.jpg
  158. BIN public/soundmanagerv297a-20130101/demo/cassette-tape/image/gradient.png
  159. BIN public/soundmanagerv297a-20130101/demo/cassette-tape/image/ma-r90-body-skin.png
  160. BIN public/soundmanagerv297a-20130101/demo/cassette-tape/image/ma-r90-mask.png
  161. BIN public/soundmanagerv297a-20130101/demo/cassette-tape/image/ma-r90-metal-pattern-v2.png
  162. BIN public/soundmanagerv297a-20130101/demo/cassette-tape/image/rail-middle-outline.png
  163. BIN public/soundmanagerv297a-20130101/demo/cassette-tape/image/spool-metal-black.png
  164. BIN public/soundmanagerv297a-20130101/demo/cassette-tape/image/spool-metal.png
  165. BIN public/soundmanagerv297a-20130101/demo/cassette-tape/image/spool-spokes.png
  166. BIN public/soundmanagerv297a-20130101/demo/cassette-tape/image/tape-guide.png
  167. BIN public/soundmanagerv297a-20130101/demo/cassette-tape/image/tape-screw-dark.png
  168. BIN public/soundmanagerv297a-20130101/demo/cassette-tape/image/tape-screw.png
  169. BIN public/soundmanagerv297a-20130101/demo/cassette-tape/image/tape-texture.png
  170. +143 −0 public/soundmanagerv297a-20130101/demo/cassette-tape/index.html
  171. +414 −0 public/soundmanagerv297a-20130101/demo/cassette-tape/more.html
  172. +1,198 −0 public/soundmanagerv297a-20130101/demo/cassette-tape/script/cassette-tape-ui.js
  173. +145 −0 public/soundmanagerv297a-20130101/demo/cassette-tape/script/demo.js
  174. +147 −0 public/soundmanagerv297a-20130101/demo/christmas-lights/christmaslights.css
  175. +784 −0 public/soundmanagerv297a-20130101/demo/christmas-lights/christmaslights.js
  176. BIN public/soundmanagerv297a-20130101/demo/christmas-lights/image/bg-strip-dark.png
  177. BIN public/soundmanagerv297a-20130101/demo/christmas-lights/image/blank.png
  178. BIN public/soundmanagerv297a-20130101/demo/christmas-lights/image/bulbs-32x32-bottom.png
  179. BIN public/soundmanagerv297a-20130101/demo/christmas-lights/image/bulbs-32x32-left.png
  180. BIN public/soundmanagerv297a-20130101/demo/christmas-lights/image/bulbs-32x32-right.png
  181. BIN public/soundmanagerv297a-20130101/demo/christmas-lights/image/bulbs-32x32-top.png
  182. BIN public/soundmanagerv297a-20130101/demo/christmas-lights/image/bulbs-50x50-bottom.png
  183. BIN public/soundmanagerv297a-20130101/demo/christmas-lights/image/bulbs-50x50-fragments.png
  184. BIN public/soundmanagerv297a-20130101/demo/christmas-lights/image/bulbs-50x50-left.png
  185. BIN public/soundmanagerv297a-20130101/demo/christmas-lights/image/bulbs-50x50-right.png
  186. BIN public/soundmanagerv297a-20130101/demo/christmas-lights/image/bulbs-50x50-top.png
  187. BIN public/soundmanagerv297a-20130101/demo/christmas-lights/image/bulbs-50x50.png
  188. BIN public/soundmanagerv297a-20130101/demo/christmas-lights/image/bulbs-64x64-bottom.png
  189. BIN public/soundmanagerv297a-20130101/demo/christmas-lights/image/bulbs-64x64-left.png
  190. BIN public/soundmanagerv297a-20130101/demo/christmas-lights/image/bulbs-64x64-right.png
  191. BIN public/soundmanagerv297a-20130101/demo/christmas-lights/image/bulbs-64x64-top.png
  192. BIN public/soundmanagerv297a-20130101/demo/christmas-lights/image/bulbs-72x72-bottom.png
  193. BIN public/soundmanagerv297a-20130101/demo/christmas-lights/image/bulbs-72x72-left.png
  194. BIN public/soundmanagerv297a-20130101/demo/christmas-lights/image/bulbs-72x72-right.png
  195. BIN public/soundmanagerv297a-20130101/demo/christmas-lights/image/bulbs-72x72-top.png
  196. BIN public/soundmanagerv297a-20130101/demo/christmas-lights/image/bulbs-96x96-bottom.png
  197. BIN public/soundmanagerv297a-20130101/demo/christmas-lights/image/bulbs-96x96-left.png
  198. BIN public/soundmanagerv297a-20130101/demo/christmas-lights/image/bulbs-96x96-right.png
  199. BIN public/soundmanagerv297a-20130101/demo/christmas-lights/image/bulbs-96x96-top.png
  200. BIN public/soundmanagerv297a-20130101/demo/christmas-lights/image/noise-pattern.png
  201. +37 −0 public/soundmanagerv297a-20130101/demo/christmas-lights/index.html
  202. BIN public/soundmanagerv297a-20130101/demo/christmas-lights/sound/glass0.mp3
  203. BIN public/soundmanagerv297a-20130101/demo/christmas-lights/sound/glass1.mp3
  204. BIN public/soundmanagerv297a-20130101/demo/christmas-lights/sound/glass2.mp3
  205. BIN public/soundmanagerv297a-20130101/demo/christmas-lights/sound/glass3.mp3
  206. BIN public/soundmanagerv297a-20130101/demo/christmas-lights/sound/glass4.mp3
  207. BIN public/soundmanagerv297a-20130101/demo/christmas-lights/sound/glass5.mp3
  208. +23 −0 public/soundmanagerv297a-20130101/demo/debug.css
  209. +37 −0 public/soundmanagerv297a-20130101/demo/flashblock/basic.html
  210. +130 −0 public/soundmanagerv297a-20130101/demo/flashblock/flashblock.css
  211. +134 −0 public/soundmanagerv297a-20130101/demo/flashblock/index.html
  212. +61 −0 public/soundmanagerv297a-20130101/demo/flashblock/method1/flashblock.css
  213. +90 −0 public/soundmanagerv297a-20130101/demo/flashblock/method1/flashblock.js
  214. +85 −0 public/soundmanagerv297a-20130101/demo/flashblock/method1/index.html
  215. +39 −0 public/soundmanagerv297a-20130101/demo/index-rollup.css
  216. +199 −0 public/soundmanagerv297a-20130101/demo/index-rollup.js
  217. +2,882 −0 public/soundmanagerv297a-20130101/demo/index.css
  218. +28 −0 public/soundmanagerv297a-20130101/demo/index.html
  219. +620 −0 public/soundmanagerv297a-20130101/demo/index.js
  220. +56 −0 public/soundmanagerv297a-20130101/demo/mp3-player-button/basic.html
  221. +117 −0 public/soundmanagerv297a-20130101/demo/mp3-player-button/css/mp3-player-button.css
  222. BIN public/soundmanagerv297a-20130101/demo/mp3-player-button/image/arrow-right-black.gif
  223. BIN public/soundmanagerv297a-20130101/demo/mp3-player-button/image/arrow-right-black.png
  224. BIN public/soundmanagerv297a-20130101/demo/mp3-player-button/image/arrow-right-white.gif
  225. BIN public/soundmanagerv297a-20130101/demo/mp3-player-button/image/arrow-right-white.png
  226. +195 −0 public/soundmanagerv297a-20130101/demo/mp3-player-button/index.html
  227. +261 −0 public/soundmanagerv297a-20130101/demo/mp3-player-button/script/mp3-player-button.js
  228. +33 −0 public/soundmanagerv297a-20130101/demo/mpc/acoustic-drumkit.xml
  229. BIN public/soundmanagerv297a-20130101/demo/mpc/audio/AMB_BD_1.mp3
  230. BIN public/soundmanagerv297a-20130101/demo/mpc/audio/AMB_FTM2.mp3
  231. BIN public/soundmanagerv297a-20130101/demo/mpc/audio/AMB_HHCL.mp3
  232. BIN public/soundmanagerv297a-20130101/demo/mpc/audio/AMB_HHOP.mp3
  233. BIN public/soundmanagerv297a-20130101/demo/mpc/audio/AMB_HHPD.mp3
  234. BIN public/soundmanagerv297a-20130101/demo/mpc/audio/AMB_HTM.mp3
  235. BIN public/soundmanagerv297a-20130101/demo/mpc/audio/AMB_LTM2.mp3
  236. BIN public/soundmanagerv297a-20130101/demo/mpc/audio/AMB_MTM.mp3
  237. BIN public/soundmanagerv297a-20130101/demo/mpc/audio/AMB_RIM1.mp3
  238. BIN public/soundmanagerv297a-20130101/demo/mpc/audio/AMB_SN13.mp3
  239. BIN public/soundmanagerv297a-20130101/demo/mpc/audio/AMB_SN_5.mp3
  240. BIN public/soundmanagerv297a-20130101/demo/mpc/audio/CHINA_1.mp3
  241. BIN public/soundmanagerv297a-20130101/demo/mpc/audio/CRASH_1.mp3
  242. BIN public/soundmanagerv297a-20130101/demo/mpc/audio/CRASH_5.mp3
  243. BIN public/soundmanagerv297a-20130101/demo/mpc/audio/CRASH_6.mp3
  244. BIN public/soundmanagerv297a-20130101/demo/mpc/audio/RIDE_1.mp3
  245. BIN public/soundmanagerv297a-20130101/demo/mpc/audio/RIDE_3.mp3
  246. BIN public/soundmanagerv297a-20130101/demo/mpc/audio/SPLASH_1.mp3
  247. +158 −0 public/soundmanagerv297a-20130101/demo/mpc/css/mpc.css
  248. BIN public/soundmanagerv297a-20130101/demo/mpc/image/progress.png
  249. +72 −0 public/soundmanagerv297a-20130101/demo/mpc/index.html
  250. +140 −0 public/soundmanagerv297a-20130101/demo/mpc/script/mpc.js
  251. +82 −0 public/soundmanagerv297a-20130101/demo/page-player/basic.html
  252. +124 −0 public/soundmanagerv297a-20130101/demo/page-player/css/demo.css
  253. +162 −0 public/soundmanagerv297a-20130101/demo/page-player/css/optional-annotations.css
  254. +200 −0 public/soundmanagerv297a-20130101/demo/page-player/css/optional-themes.css
  255. +307 −0 public/soundmanagerv297a-20130101/demo/page-player/css/page-player.css
  256. BIN public/soundmanagerv297a-20130101/demo/page-player/image/divot-bottom.png
  257. BIN public/soundmanagerv297a-20130101/demo/page-player/image/divot.png
  258. BIN public/soundmanagerv297a-20130101/demo/page-player/image/top-highlight.png
  259. +379 −0 public/soundmanagerv297a-20130101/demo/page-player/index.html
  260. +142 −0 public/soundmanagerv297a-20130101/demo/page-player/script/optional-page-player-metadata.js
  261. +1,078 −0 public/soundmanagerv297a-20130101/demo/page-player/script/page-player.js
  262. +23 −0 public/soundmanagerv297a-20130101/demo/page-player/xbm-test.html
  263. +61 −0 public/soundmanagerv297a-20130101/demo/play-mp3-links/basic.html
  264. +210 −0 public/soundmanagerv297a-20130101/demo/play-mp3-links/css/inlineplayer.css
  265. BIN public/soundmanagerv297a-20130101/demo/play-mp3-links/image/icon_pause.gif
  266. BIN public/soundmanagerv297a-20130101/demo/play-mp3-links/image/icon_pause.png
  267. BIN public/soundmanagerv297a-20130101/demo/play-mp3-links/image/icon_play.gif
  268. BIN public/soundmanagerv297a-20130101/demo/play-mp3-links/image/icon_play.png
  269. BIN public/soundmanagerv297a-20130101/demo/play-mp3-links/image/test.gif
  270. +227 −0 public/soundmanagerv297a-20130101/demo/play-mp3-links/index.html
Sorry, we could not display the entire diff because too many files (319) changed.
View
9 TODO
@@ -3,4 +3,11 @@
- max 9?
- schermata lobby
- propagazione azione da mobile
-- posizione rispetto ad altri
+- posizione rispetto ad altri
+
+
+-> checkWavesBounds
+
+last_wave_id start 0 / 1 -> array filter null
+
+- 2nd canvas buffer
View
BIN public/audio/bounce.ogg
Binary file not shown.
View
BIN public/audio/cuorizini.mp3
Binary file not shown.
View
152 public/js/Mangonel.js
@@ -1,7 +1,31 @@
(function(exports) {
+ soundManager.setup({
+ url: '/swf/',
+ autoLoad: true,
+ autoPlay: false,
+ flashVersion: 9,
+ useFlashBlock: false,
+ onready: function() {
+ if (soundManager.supported()) {
+ // SM2 is ready to go!
+ soundManager.createSound({
+ id: 'bounce',
+ url: '/audio/bounce.ogg',
+ autoLoad: true,
+ autoPlay: false,
+ volume: 50
+ });
+ } else {
+ // unsupported/error case
+ console.log('error');
+ }
+ }
+ });
+
var Mangonel = function() {
- var desiredFPS = 60,
+ var debug = true,
+ desiredFPS = 60,
allowSendEvery = 75,
isReady = true,
isPlaying = false,
@@ -23,6 +47,9 @@
backslash : 220
};
+ var last_wave_id = 0,
+ waves = [];
+
var player = new Player(),
players = [];
@@ -34,9 +61,6 @@
canvasWidth = canvas.width(),
canvasHeight = canvas.height();
- ctx.fillStyle = 'rgb(0, 0, 0)';
- ctx.font = "15px Monospace";
-
var vp = new Viewport(canvasWidth, canvasHeight);
var resizeCanvas = function() {
@@ -45,19 +69,22 @@
canvas.attr({ width: canvasWidth, height: canvasHeight });
+ ctx.fillStyle = 'rgb(0, 0, 0)';
+ ctx.font = "15px Monospace";
+
vp.setSize(canvasWidth, canvasHeight);
};
$(window).resize(resizeCanvas);
resizeCanvas();
- var debug = function(msg) {
- console.log(msg);
+ var debugLog = function(msg) {
+ console.log(new Date().toJSON() +": "+ msg);
};
var stop = function() {
isPlaying = false;
- debug('* Mangonel stopped.');
+ debugLog('* Mangonel stopped.');
};
var toggleDebugPanel = function(spd) {
@@ -89,7 +116,7 @@
var start = function() {
if (isReady) {
- debug('* Mangonel started.');
+ debugLog('* Mangonel started.');
isPlaying = true;
$(window).keydown(function(e) {
@@ -158,9 +185,9 @@
fps.init(fps_handle);
- loop();
+ gameLoop();
} else {
- debug('* Mangonel not ready.');
+ debugLog('* Mangonel not ready.');
}
};
@@ -254,11 +281,84 @@
//ctx.fillRect(coords.x, coords.y, p.width, p.height);
};
- var loop = function() {
+ var isInsideCanvas = function(x, y) {
+ return !((x < 0) ||
+ (y < 0) ||
+ (x > canvasWidth) ||
+ (y > canvasHeight));
+ };
+
+ var checkWavesBounds = function() {
+ var i = 0;
+ for (i in waves) {
+ // if (waves[i].isActive) {
+
+ var diagonalBounds = waves[i].getDiagonalBounds(),
+ j = 0;
+ for (j in diagonalBounds) {
+
+ // DEBUG
+ ctx.beginPath();
+ ctx.arc(diagonalBounds[j].x, diagonalBounds[j].y, 5, 0, Math.PI * 2, false);
+ ctx.lineWidth = 3;
+ ctx.strokeStyle = 'blue';
+ ctx.stroke();
+
+ if (!isInsideCanvas(diagonalBounds[j].x, diagonalBounds[j].y)) {
+ soundManager.play('bounce');
+
+ // waves[i].isActive = false;
+ waves.splice(i, 1);
+
+ break;
+ }
+ }
+
+ // }
+
+ }
+ };
+
+ var createWave = function(options) {
+ options.id = last_wave_id;
+
+ waves.push(new Wave(options));
+
+ last_wave_id++;
+ };
+
+ $(canvas).bind("mousedown", function(e) {
+ mouseX = e.offsetX || e.layerX;
+ mouseY = e.offsetY || e.layerY;
+
+ createWave({ playerId: player.id, x: mouseX, y: mouseY, radius: 10 });
+
+ // console.log(mouseX, mouseY);
+ });
+
+ var drawWaves = function() {
+ var i = 0;
+ for (i in waves) {
+ // if (waves[i]) {
+ waves[i].draw(ctx);
+ // }
+ }
+ };
+
+ var growWaves = function() {
+ var i = 0;
+ for (i in waves) {
+ // if (waves[i]) {
+ waves[i].grow(1);
+ // }
+ }
+ };
+
+ var gameLoop = function() {
ctx.clearRect(0, 0, canvasWidth, canvasHeight);
if (isPlaying) {
- sendMovement();
+ /*sendMovement();
vp.setCenter(player.x, player.y);
@@ -270,12 +370,16 @@
if (players[i].id != player.id) {
drawPlayer(players[i]);
}
- }
+ }*/
+
+ growWaves();
+ checkWavesBounds();
+ drawWaves();
fps.count++;
- requestAnimationFrame(loop);
- //setTimeout(loop, desiredFPS); //debug
+ requestAnimationFrame(gameLoop);
+ //setTimeout(gameLoop, desiredFPS); //debug
}
};
@@ -285,8 +389,10 @@
player.x = data.player.x;
player.y = data.player.y;
- debug('Received current player id: '+ player.id);
- debug('You have joined the server.');
+ debugLog('Received current player id: '+ player.id);
+ debugLog('You have joined the server.');
+
+ // waves = waves.filter(function(){return true;}); // cleans null from array FIXME
});
socket.on('quit', function(data) {
@@ -301,7 +407,7 @@
}
}
- debug('Player quitted: '+ quitter +' (id '+ data.id +')');
+ debugLog('Player quitted: '+ quitter +' (id '+ data.id +')');
});
socket.on('newplayer', function(data) {
@@ -313,7 +419,7 @@
newPlayer.lastMoveDir = data.player.lastMoveDir;
players.push(newPlayer);
- debug('New player joined: '+ newPlayer.nick);
+ debugLog('New player joined: '+ newPlayer.nick);
tmpPlayer = {};
});
@@ -334,7 +440,7 @@
tmpPlayer = {};
}
- debug('Initial player list received: '+ length +' players.');
+ debugLog('Initial player list received: '+ length +' players.');
});
socket.on('play', function(data) {
@@ -355,7 +461,7 @@
socket.on('ping', function(data) {
socket.emit('pong', { time: Date.now() });
- //debug('Ping? Pong!');
+ //debugLog('Ping? Pong!');
});
socket.on('pingupdate', function(data) {
@@ -386,10 +492,10 @@
canvasWidth: canvasWidth,
canvasHeight: canvasHeight,
- debug: debug,
+ debugLog: debugLog,
start: start,
stop: stop,
- loop: loop,
+ gameLoop: gameLoop,
toggleDebugPanel: toggleDebugPanel
};
};
View
103 public/js/Wave.js
@@ -0,0 +1,103 @@
+(function(exports) {
+
+ var Wave = function(options) {
+ this.id = options.id;
+ this.playerId = options.playerId || -1;
+
+ this.x = options.x || 0;
+ this.y = options.y || 0;
+ this.radius = options.radius || 10;
+
+ this.color = options.color || 'black';
+ this.lineWidth = options.lineWidth || 1;
+
+ this.isActive = true;
+
+ return this.id;
+ };
+
+ Wave.prototype.toString = function() {
+ return this.id +' '+
+ this.playerId +' '+
+ this.x +':'+
+ this.y +' '+
+ this.radius +' '+
+ this.isActive;
+ };
+
+ /* Wave.prototype.setId = function(id) {
+ this.id = id;
+ };
+
+ Wave.prototype.setPlayerId = function(playerId) {
+ this.playerId = playerId;
+ };
+
+ Wave.prototype.setXY = function(x, y) {
+ this.x = x;
+ this.y = y;
+ };
+
+ Wave.prototype.setX = function(x) {
+ this.x = x;
+ };
+
+ Wave.prototype.setY = function(y) {
+ this.y = y;
+ };
+
+ Wave.prototype.setRadius = function(radius) {
+ this.radius = radius;
+ };
+
+ Wave.prototype.setActive = function(isActive) {
+ this.isActive = isActive;
+ };*/
+
+ Wave.prototype.grow = function(value) {
+ this.radius += value;
+ };
+
+ Wave.prototype.shrink = function(value) {
+ this.radius -= value;
+ };
+
+ Wave.prototype.getPoint = function(angle) {
+ return { x: this.x + Math.cos(angle) * this.radius, y: this.y + Math.sin(angle) * this.radius };
+ };
+
+ // http://i.imgur.com/S1LfmpO.jpg recap
+ Wave.prototype.getDiagonalBounds = function() {
+ // NE SE SW NW / N E S W
+ var diagonalBounds = [
+ // (7/4 * Math.PI), // 315
+ // (1/4 * Math.PI), // 45
+ // (3/4 * Math.PI), // 135
+ // (5/4 * Math.PI) // 225
+ (Math.PI * 3/2), // 270
+ 0, // 0
+ (Math.PI / 2), // 90
+ Math.PI // 180
+ ];
+
+ for (var i in diagonalBounds) {
+ diagonalBounds[i] = this.getPoint(diagonalBounds[i]);
+ }
+
+ return diagonalBounds;
+ };
+
+ Wave.prototype.draw = function(ctx) {
+ var startAngle = 0,
+ endAngle = Math.PI * 2;
+
+ ctx.beginPath();
+ ctx.arc(this.x, this.y, this.radius, startAngle, endAngle, false);
+
+ ctx.lineWidth = this.lineWidth;
+ ctx.strokeStyle = this.color;
+ ctx.stroke();
+ };
+
+ exports.Wave = Wave;
+})(typeof global === "undefined" ? window : exports);
View
16 public/js/main.js
@@ -1,3 +1,11 @@
+function disableDraggingFor(element) {
+ element.draggable = false;
+ element.onmousedown = function(event) {
+ event.preventDefault();
+ return false;
+ };
+}
+
$(document).ready(function() {
var Game = null,
@@ -12,8 +20,10 @@ $(document).ready(function() {
'/socket.io/socket.io.js',
'/js/Fps.js',
'/js/Player.js',
+ '/js/Wave.js',
'/js/Viewport.js',
'/js/requestAnimationFrame.js',
+ '/js/soundmanager2-nodebug-jsmin.js',
'/js/Mangonel.js'
];
@@ -26,18 +36,18 @@ $(document).ready(function() {
*/
Game.socket.on('connect', function() {
- Game.debug('Connected.');
+ Game.debugLog('Connected.');
Game.start();
});
Game.socket.on('disconnect', function() {
- Game.debug('Disconnected.');
+ Game.debugLog('Disconnected.');
Game.stop();
});
Game.socket.on('tot', function(data) {
tot.html(data.tot);
- Game.debug("Current players number: "+ data.tot);
+ Game.debugLog("Current players number: "+ data.tot);
});
});
View
78 public/js/soundmanager2-nodebug-jsmin.js
@@ -0,0 +1,78 @@
+/** @license
+ *
+ * SoundManager 2: JavaScript Sound for the Web
+ * ----------------------------------------------
+ * http://schillmania.com/projects/soundmanager2/
+ *
+ * Copyright (c) 2007, Scott Schiller. All rights reserved.
+ * Code provided under the BSD License:
+ * http://schillmania.com/projects/soundmanager2/license.txt
+ *
+ * V2.97a.20130101
+ */
+(function(i,g){function R(R,fa){function S(b){return c.preferFlash&&A&&!c.ignoreFlash&&c.flash[b]!==g&&c.flash[b]}function m(b){return function(c){var d=this._s;return!d||!d._a?null:b.call(this,c)}}this.setupOptions={url:R||null,flashVersion:8,debugMode:!0,debugFlash:!1,useConsole:!0,consoleOnly:!0,waitForWindowLoad:!1,bgColor:"#ffffff",useHighPerformance:!1,flashPollingInterval:null,html5PollingInterval:null,flashLoadTimeout:1E3,wmode:null,allowScriptAccess:"always",useFlashBlock:!1,useHTML5Audio:!0,
+html5Test:/^(probably|maybe)$/i,preferFlash:!0,noSWFCache:!1};this.defaultOptions={autoLoad:!1,autoPlay:!1,from:null,loops:1,onid3:null,onload:null,whileloading:null,onplay:null,onpause:null,onresume:null,whileplaying:null,onposition:null,onstop:null,onfailure:null,onfinish:null,multiShot:!0,multiShotEvents:!1,position:null,pan:0,stream:!0,to:null,type:null,usePolicyFile:!1,volume:100};this.flash9Options={isMovieStar:null,usePeakData:!1,useWaveformData:!1,useEQData:!1,onbufferchange:null,ondataerror:null};
+this.movieStarOptions={bufferTime:3,serverURL:null,onconnect:null,duration:null};this.audioFormats={mp3:{type:['audio/mpeg; codecs="mp3"',"audio/mpeg","audio/mp3","audio/MPA","audio/mpa-robust"],required:!0},mp4:{related:["aac","m4a","m4b"],type:['audio/mp4; codecs="mp4a.40.2"',"audio/aac","audio/x-m4a","audio/MP4A-LATM","audio/mpeg4-generic"],required:!1},ogg:{type:["audio/ogg; codecs=vorbis"],required:!1},wav:{type:['audio/wav; codecs="1"',"audio/wav","audio/wave","audio/x-wav"],required:!1}};this.movieID=
+"sm2-container";this.id=fa||"sm2movie";this.debugID="soundmanager-debug";this.debugURLParam=/([#?&])debug=1/i;this.versionNumber="V2.97a.20130101";this.altURL=this.movieURL=this.version=null;this.enabled=this.swfLoaded=!1;this.oMC=null;this.sounds={};this.soundIDs=[];this.didFlashBlock=this.muted=!1;this.filePattern=null;this.filePatterns={flash8:/\.mp3(\?.*)?$/i,flash9:/\.mp3(\?.*)?$/i};this.features={buffering:!1,peakData:!1,waveformData:!1,eqData:!1,movieStar:!1};this.sandbox={};this.html5={usingFlash:null};
+this.flash={};this.ignoreFlash=this.html5Only=!1;var Ga,c=this,Ha=null,h=null,T,q=navigator.userAgent,ga=i.location.href.toString(),l=document,ha,Ia,ia,k,r=[],J=!1,K=!1,j=!1,s=!1,ja=!1,L,t,ka,U,la,B,C,D,Ja,ma,V,na,W,oa,E,pa,M,qa,X,F,Ka,ra,La,sa,Ma,N=null,ta=null,v,ua,G,Y,Z,H,p,O=!1,va=!1,Na,Oa,Pa,$=0,P=null,aa,Qa=[],u=null,Ra,ba,Q,y,wa,xa,Sa,n,db=Array.prototype.slice,w=!1,ya,A,za,Ta,x,ca=q.match(/(ipad|iphone|ipod)/i),Ua=q.match(/android/i),z=q.match(/msie/i),eb=q.match(/webkit/i),Aa=q.match(/safari/i)&&
+!q.match(/chrome/i),Ba=q.match(/opera/i),Ca=q.match(/(mobile|pre\/|xoom)/i)||ca||Ua,Va=!ga.match(/usehtml5audio/i)&&!ga.match(/sm2\-ignorebadua/i)&&Aa&&!q.match(/silk/i)&&q.match(/OS X 10_6_([3-7])/i),Da=l.hasFocus!==g?l.hasFocus():null,da=Aa&&(l.hasFocus===g||!l.hasFocus()),Wa=!da,Xa=/(mp3|mp4|mpa|m4a|m4b)/i,Ea=l.location?l.location.protocol.match(/http/i):null,Ya=!Ea?"http://":"",Za=/^\s*audio\/(?:x-)?(?:mpeg4|aac|flv|mov|mp4||m4v|m4a|m4b|mp4v|3gp|3g2)\s*(?:$|;)/i,$a="mpeg4 aac flv mov mp4 m4v f4v m4a m4b mp4v 3gp 3g2".split(" "),
+fb=RegExp("\\.("+$a.join("|")+")(\\?.*)?$","i");this.mimePattern=/^\s*audio\/(?:x-)?(?:mp(?:eg|3))\s*(?:$|;)/i;this.useAltURL=!Ea;var Fa;try{Fa=Audio!==g&&(Ba&&opera!==g&&10>opera.version()?new Audio(null):new Audio).canPlayType!==g}catch(hb){Fa=!1}this.hasHTML5=Fa;this.setup=function(b){var e=!c.url;b!==g&&(j&&u&&c.ok()&&(b.flashVersion!==g||b.url!==g||b.html5Test!==g))&&H(v("setupLate"));ka(b);e&&(M&&b.url!==g)&&c.beginDelayedInit();!M&&(b.url!==g&&"complete"===l.readyState)&&setTimeout(E,1);return c};
+this.supported=this.ok=function(){return u?j&&!s:c.useHTML5Audio&&c.hasHTML5};this.getMovie=function(b){return T(b)||l[b]||i[b]};this.createSound=function(b,e){function d(){a=Y(a);c.sounds[a.id]=new Ga(a);c.soundIDs.push(a.id);return c.sounds[a.id]}var a,f=null;if(!j||!c.ok())return H(void 0),!1;e!==g&&(b={id:b,url:e});a=t(b);a.url=aa(a.url);if(p(a.id,!0))return c.sounds[a.id];ba(a)?(f=d(),f._setup_html5(a)):(8<k&&null===a.isMovieStar&&(a.isMovieStar=!(!a.serverURL&&!(a.type&&a.type.match(Za)||a.url.match(fb)))),
+a=Z(a,void 0),f=d(),8===k?h._createSound(a.id,a.loops||1,a.usePolicyFile):(h._createSound(a.id,a.url,a.usePeakData,a.useWaveformData,a.useEQData,a.isMovieStar,a.isMovieStar?a.bufferTime:!1,a.loops||1,a.serverURL,a.duration||null,a.autoPlay,!0,a.autoLoad,a.usePolicyFile),a.serverURL||(f.connected=!0,a.onconnect&&a.onconnect.apply(f))),!a.serverURL&&(a.autoLoad||a.autoPlay)&&f.load(a));!a.serverURL&&a.autoPlay&&f.play();return f};this.destroySound=function(b,e){if(!p(b))return!1;var d=c.sounds[b],a;
+d._iO={};d.stop();d.unload();for(a=0;a<c.soundIDs.length;a++)if(c.soundIDs[a]===b){c.soundIDs.splice(a,1);break}e||d.destruct(!0);delete c.sounds[b];return!0};this.load=function(b,e){return!p(b)?!1:c.sounds[b].load(e)};this.unload=function(b){return!p(b)?!1:c.sounds[b].unload()};this.onposition=this.onPosition=function(b,e,d,a){return!p(b)?!1:c.sounds[b].onposition(e,d,a)};this.clearOnPosition=function(b,e,d){return!p(b)?!1:c.sounds[b].clearOnPosition(e,d)};this.start=this.play=function(b,e){var d=
+!1;return!j||!c.ok()?(H("soundManager.play(): "+v(!j?"notReady":"notOK")),d):!p(b)?(e instanceof Object||(e={url:e}),e&&e.url&&(e.id=b,d=c.createSound(e).play()),d):c.sounds[b].play(e)};this.setPosition=function(b,e){return!p(b)?!1:c.sounds[b].setPosition(e)};this.stop=function(b){return!p(b)?!1:c.sounds[b].stop()};this.stopAll=function(){for(var b in c.sounds)c.sounds.hasOwnProperty(b)&&c.sounds[b].stop()};this.pause=function(b){return!p(b)?!1:c.sounds[b].pause()};this.pauseAll=function(){var b;
+for(b=c.soundIDs.length-1;0<=b;b--)c.sounds[c.soundIDs[b]].pause()};this.resume=function(b){return!p(b)?!1:c.sounds[b].resume()};this.resumeAll=function(){var b;for(b=c.soundIDs.length-1;0<=b;b--)c.sounds[c.soundIDs[b]].resume()};this.togglePause=function(b){return!p(b)?!1:c.sounds[b].togglePause()};this.setPan=function(b,e){return!p(b)?!1:c.sounds[b].setPan(e)};this.setVolume=function(b,e){return!p(b)?!1:c.sounds[b].setVolume(e)};this.mute=function(b){var e=0;b instanceof String&&(b=null);if(b)return!p(b)?
+!1:c.sounds[b].mute();for(e=c.soundIDs.length-1;0<=e;e--)c.sounds[c.soundIDs[e]].mute();return c.muted=!0};this.muteAll=function(){c.mute()};this.unmute=function(b){b instanceof String&&(b=null);if(b)return!p(b)?!1:c.sounds[b].unmute();for(b=c.soundIDs.length-1;0<=b;b--)c.sounds[c.soundIDs[b]].unmute();c.muted=!1;return!0};this.unmuteAll=function(){c.unmute()};this.toggleMute=function(b){return!p(b)?!1:c.sounds[b].toggleMute()};this.getMemoryUse=function(){var b=0;h&&8!==k&&(b=parseInt(h._getMemoryUse(),
+10));return b};this.disable=function(b){var e;b===g&&(b=!1);if(s)return!1;s=!0;for(e=c.soundIDs.length-1;0<=e;e--)La(c.sounds[c.soundIDs[e]]);L(b);n.remove(i,"load",C);return!0};this.canPlayMIME=function(b){var e;c.hasHTML5&&(e=Q({type:b}));!e&&u&&(e=b&&c.ok()?!!(8<k&&b.match(Za)||b.match(c.mimePattern)):null);return e};this.canPlayURL=function(b){var e;c.hasHTML5&&(e=Q({url:b}));!e&&u&&(e=b&&c.ok()?!!b.match(c.filePattern):null);return e};this.canPlayLink=function(b){return b.type!==g&&b.type&&c.canPlayMIME(b.type)?
+!0:c.canPlayURL(b.href)};this.getSoundById=function(b){if(!b)throw Error("soundManager.getSoundById(): sID is null/_undefined");return c.sounds[b]};this.onready=function(b,c){if("function"===typeof b)c||(c=i),la("onready",b,c),B();else throw v("needFunction","onready");return!0};this.ontimeout=function(b,c){if("function"===typeof b)c||(c=i),la("ontimeout",b,c),B({type:"ontimeout"});else throw v("needFunction","ontimeout");return!0};this._wD=this._writeDebug=function(){return!0};this._debug=function(){};
+this.reboot=function(b,e){var d,a,f;for(d=c.soundIDs.length-1;0<=d;d--)c.sounds[c.soundIDs[d]].destruct();if(h)try{z&&(ta=h.innerHTML),N=h.parentNode.removeChild(h)}catch(g){}ta=N=u=h=null;c.enabled=M=j=O=va=J=K=s=w=c.swfLoaded=!1;c.soundIDs=[];c.sounds={};if(b)r=[];else for(d in r)if(r.hasOwnProperty(d)){a=0;for(f=r[d].length;a<f;a++)r[d][a].fired=!1}c.html5={usingFlash:null};c.flash={};c.html5Only=!1;c.ignoreFlash=!1;i.setTimeout(function(){oa();e||c.beginDelayedInit()},20);return c};this.reset=
+function(){return c.reboot(!0,!0)};this.getMoviePercent=function(){return h&&"PercentLoaded"in h?h.PercentLoaded():null};this.beginDelayedInit=function(){ja=!0;E();setTimeout(function(){if(va)return!1;X();W();return va=!0},20);D()};this.destruct=function(){c.disable(!0)};Ga=function(b){var e,d,a=this,f,ab,i,I,l,m,q=!1,j=[],n=0,s,u,r=null;d=e=null;this.sID=this.id=b.id;this.url=b.url;this._iO=this.instanceOptions=this.options=t(b);this.pan=this.options.pan;this.volume=this.options.volume;this.isHTML5=
+!1;this._a=null;this.id3={};this._debug=function(){};this.load=function(b){var c=null;b!==g?a._iO=t(b,a.options):(b=a.options,a._iO=b,r&&r!==a.url&&(a._iO.url=a.url,a.url=null));a._iO.url||(a._iO.url=a.url);a._iO.url=aa(a._iO.url);b=a.instanceOptions=a._iO;if(b.url===a.url&&0!==a.readyState&&2!==a.readyState)return 3===a.readyState&&b.onload&&b.onload.apply(a,[!!a.duration]),a;a.loaded=!1;a.readyState=1;a.playState=0;a.id3={};if(ba(b))c=a._setup_html5(b),c._called_load||(a._html5_canplay=!1,a.url!==
+b.url&&(a._a.src=b.url,a.setPosition(0)),a._a.autobuffer="auto",a._a.preload="auto",a._a._called_load=!0,b.autoPlay&&a.play());else try{a.isHTML5=!1,a._iO=Z(Y(b)),b=a._iO,8===k?h._load(a.id,b.url,b.stream,b.autoPlay,b.usePolicyFile):h._load(a.id,b.url,!!b.stream,!!b.autoPlay,b.loops||1,!!b.autoLoad,b.usePolicyFile)}catch(e){F({type:"SMSOUND_LOAD_JS_EXCEPTION",fatal:!0})}a.url=b.url;return a};this.unload=function(){0!==a.readyState&&(a.isHTML5?(I(),a._a&&(a._a.pause(),wa(a._a,"about:blank"),r="about:blank")):
+8===k?h._unload(a.id,"about:blank"):h._unload(a.id),f());return a};this.destruct=function(b){a.isHTML5?(I(),a._a&&(a._a.pause(),wa(a._a),w||i(),a._a._s=null,a._a=null)):(a._iO.onfailure=null,h._destroySound(a.id));b||c.destroySound(a.id,!0)};this.start=this.play=function(b,c){var e,d;d=!0;d=null;c=c===g?!0:c;b||(b={});a.url&&(a._iO.url=a.url);a._iO=t(a._iO,a.options);a._iO=t(b,a._iO);a._iO.url=aa(a._iO.url);a.instanceOptions=a._iO;if(a._iO.serverURL&&!a.connected)return a.getAutoPlay()||a.setAutoPlay(!0),
+a;ba(a._iO)&&(a._setup_html5(a._iO),l());1===a.playState&&!a.paused&&((e=a._iO.multiShot)||(d=a));if(null!==d)return d;b.url&&b.url!==a.url&&a.load(a._iO);a.loaded||(0===a.readyState?(a.isHTML5||(a._iO.autoPlay=!0),a.load(a._iO),a.instanceOptions=a._iO):2===a.readyState&&(d=a));if(null!==d)return d;!a.isHTML5&&(9===k&&0<a.position&&a.position===a.duration)&&(b.position=0);if(a.paused&&0<=a.position&&(!a._iO.serverURL||0<a.position))a.resume();else{a._iO=t(b,a._iO);if(null!==a._iO.from&&null!==a._iO.to&&
+0===a.instanceCount&&0===a.playState&&!a._iO.serverURL){e=function(){a._iO=t(b,a._iO);a.play(a._iO)};if(a.isHTML5&&!a._html5_canplay)a.load({oncanplay:e}),d=!1;else if(!a.isHTML5&&!a.loaded&&(!a.readyState||2!==a.readyState))a.load({onload:e}),d=!1;if(null!==d)return d;a._iO=u()}(!a.instanceCount||a._iO.multiShotEvents||!a.isHTML5&&8<k&&!a.getAutoPlay())&&a.instanceCount++;a._iO.onposition&&0===a.playState&&m(a);a.playState=1;a.paused=!1;a.position=a._iO.position!==g&&!isNaN(a._iO.position)?a._iO.position:
+0;a.isHTML5||(a._iO=Z(Y(a._iO)));a._iO.onplay&&c&&(a._iO.onplay.apply(a),q=!0);a.setVolume(a._iO.volume,!0);a.setPan(a._iO.pan,!0);a.isHTML5?(l(),d=a._setup_html5(),a.setPosition(a._iO.position),d.play()):(d=h._start(a.id,a._iO.loops||1,9===k?a._iO.position:a._iO.position/1E3,a._iO.multiShot),9===k&&!d&&a._iO.onplayerror&&a._iO.onplayerror.apply(a))}return a};this.stop=function(b){var c=a._iO;1===a.playState&&(a._onbufferchange(0),a._resetOnPosition(0),a.paused=!1,a.isHTML5||(a.playState=0),s(),c.to&&
+a.clearOnPosition(c.to),a.isHTML5?a._a&&(b=a.position,a.setPosition(0),a.position=b,a._a.pause(),a.playState=0,a._onTimer(),I()):(h._stop(a.id,b),c.serverURL&&a.unload()),a.instanceCount=0,a._iO={},c.onstop&&c.onstop.apply(a));return a};this.setAutoPlay=function(b){a._iO.autoPlay=b;a.isHTML5||(h._setAutoPlay(a.id,b),b&&!a.instanceCount&&1===a.readyState&&a.instanceCount++)};this.getAutoPlay=function(){return a._iO.autoPlay};this.setPosition=function(b){b===g&&(b=0);var c=a.isHTML5?Math.max(b,0):Math.min(a.duration||
+a._iO.duration,Math.max(b,0));a.position=c;b=a.position/1E3;a._resetOnPosition(a.position);a._iO.position=c;if(a.isHTML5){if(a._a&&a._html5_canplay&&a._a.currentTime!==b)try{a._a.currentTime=b,(0===a.playState||a.paused)&&a._a.pause()}catch(e){}}else b=9===k?a.position:b,a.readyState&&2!==a.readyState&&h._setPosition(a.id,b,a.paused||!a.playState,a._iO.multiShot);a.isHTML5&&a.paused&&a._onTimer(!0);return a};this.pause=function(b){if(a.paused||0===a.playState&&1!==a.readyState)return a;a.paused=!0;
+a.isHTML5?(a._setup_html5().pause(),I()):(b||b===g)&&h._pause(a.id,a._iO.multiShot);a._iO.onpause&&a._iO.onpause.apply(a);return a};this.resume=function(){var b=a._iO;if(!a.paused)return a;a.paused=!1;a.playState=1;a.isHTML5?(a._setup_html5().play(),l()):(b.isMovieStar&&!b.serverURL&&a.setPosition(a.position),h._pause(a.id,b.multiShot));!q&&b.onplay?(b.onplay.apply(a),q=!0):b.onresume&&b.onresume.apply(a);return a};this.togglePause=function(){if(0===a.playState)return a.play({position:9===k&&!a.isHTML5?
+a.position:a.position/1E3}),a;a.paused?a.resume():a.pause();return a};this.setPan=function(b,c){b===g&&(b=0);c===g&&(c=!1);a.isHTML5||h._setPan(a.id,b);a._iO.pan=b;c||(a.pan=b,a.options.pan=b);return a};this.setVolume=function(b,e){b===g&&(b=100);e===g&&(e=!1);a.isHTML5?a._a&&(a._a.volume=Math.max(0,Math.min(1,b/100))):h._setVolume(a.id,c.muted&&!a.muted||a.muted?0:b);a._iO.volume=b;e||(a.volume=b,a.options.volume=b);return a};this.mute=function(){a.muted=!0;a.isHTML5?a._a&&(a._a.muted=!0):h._setVolume(a.id,
+0);return a};this.unmute=function(){a.muted=!1;var b=a._iO.volume!==g;a.isHTML5?a._a&&(a._a.muted=!1):h._setVolume(a.id,b?a._iO.volume:a.options.volume);return a};this.toggleMute=function(){return a.muted?a.unmute():a.mute()};this.onposition=this.onPosition=function(b,c,e){j.push({position:parseInt(b,10),method:c,scope:e!==g?e:a,fired:!1});return a};this.clearOnPosition=function(a,b){var c,a=parseInt(a,10);if(isNaN(a))return!1;for(c=0;c<j.length;c++)if(a===j[c].position&&(!b||b===j[c].method))j[c].fired&&
+n--,j.splice(c,1)};this._processOnPosition=function(){var b,c;b=j.length;if(!b||!a.playState||n>=b)return!1;for(b-=1;0<=b;b--)c=j[b],!c.fired&&a.position>=c.position&&(c.fired=!0,n++,c.method.apply(c.scope,[c.position]));return!0};this._resetOnPosition=function(a){var b,c;b=j.length;if(!b)return!1;for(b-=1;0<=b;b--)c=j[b],c.fired&&a<=c.position&&(c.fired=!1,n--);return!0};u=function(){var b=a._iO,c=b.from,e=b.to,d,f;f=function(){a.clearOnPosition(e,f);a.stop()};d=function(){if(null!==e&&!isNaN(e))a.onPosition(e,
+f)};null!==c&&!isNaN(c)&&(b.position=c,b.multiShot=!1,d());return b};m=function(){var b,c=a._iO.onposition;if(c)for(b in c)if(c.hasOwnProperty(b))a.onPosition(parseInt(b,10),c[b])};s=function(){var b,c=a._iO.onposition;if(c)for(b in c)c.hasOwnProperty(b)&&a.clearOnPosition(parseInt(b,10))};l=function(){a.isHTML5&&Na(a)};I=function(){a.isHTML5&&Oa(a)};f=function(b){b||(j=[],n=0);q=!1;a._hasTimer=null;a._a=null;a._html5_canplay=!1;a.bytesLoaded=null;a.bytesTotal=null;a.duration=a._iO&&a._iO.duration?
+a._iO.duration:null;a.durationEstimate=null;a.buffered=[];a.eqData=[];a.eqData.left=[];a.eqData.right=[];a.failures=0;a.isBuffering=!1;a.instanceOptions={};a.instanceCount=0;a.loaded=!1;a.metadata={};a.readyState=0;a.muted=!1;a.paused=!1;a.peakData={left:0,right:0};a.waveformData={left:[],right:[]};a.playState=0;a.position=null;a.id3={}};f();this._onTimer=function(b){var c,f=!1,g={};if(a._hasTimer||b){if(a._a&&(b||(0<a.playState||1===a.readyState)&&!a.paused))c=a._get_html5_duration(),c!==e&&(e=c,
+a.duration=c,f=!0),a.durationEstimate=a.duration,c=1E3*a._a.currentTime||0,c!==d&&(d=c,f=!0),(f||b)&&a._whileplaying(c,g,g,g,g);return f}};this._get_html5_duration=function(){var b=a._iO;return(b=a._a&&a._a.duration?1E3*a._a.duration:b&&b.duration?b.duration:null)&&!isNaN(b)&&Infinity!==b?b:null};this._apply_loop=function(a,b){a.loop=1<b?"loop":""};this._setup_html5=function(b){var b=t(a._iO,b),c=decodeURI,e=w?Ha:a._a,d=c(b.url),g;w?d===ya&&(g=!0):d===r&&(g=!0);if(e){if(e._s)if(w)e._s&&(e._s.playState&&
+!g)&&e._s.stop();else if(!w&&d===c(r))return a._apply_loop(e,b.loops),e;g||(f(!1),e.src=b.url,ya=r=a.url=b.url,e._called_load=!1)}else a._a=b.autoLoad||b.autoPlay?new Audio(b.url):Ba&&10>opera.version()?new Audio(null):new Audio,e=a._a,e._called_load=!1,w&&(Ha=e);a.isHTML5=!0;a._a=e;e._s=a;ab();a._apply_loop(e,b.loops);b.autoLoad||b.autoPlay?a.load():(e.autobuffer=!1,e.preload="auto");return e};ab=function(){if(a._a._added_events)return!1;var b;a._a._added_events=!0;for(b in x)x.hasOwnProperty(b)&&
+a._a&&a._a.addEventListener(b,x[b],!1);return!0};i=function(){var b;a._a._added_events=!1;for(b in x)x.hasOwnProperty(b)&&a._a&&a._a.removeEventListener(b,x[b],!1)};this._onload=function(b){b=!!b||!a.isHTML5&&8===k&&a.duration;a.loaded=b;a.readyState=b?3:2;a._onbufferchange(0);a._iO.onload&&a._iO.onload.apply(a,[b]);return!0};this._onbufferchange=function(b){if(0===a.playState||b&&a.isBuffering||!b&&!a.isBuffering)return!1;a.isBuffering=1===b;a._iO.onbufferchange&&a._iO.onbufferchange.apply(a);return!0};
+this._onsuspend=function(){a._iO.onsuspend&&a._iO.onsuspend.apply(a);return!0};this._onfailure=function(b,c,e){a.failures++;if(a._iO.onfailure&&1===a.failures)a._iO.onfailure(a,b,c,e)};this._onfinish=function(){var b=a._iO.onfinish;a._onbufferchange(0);a._resetOnPosition(0);a.instanceCount&&(a.instanceCount--,a.instanceCount||(s(),a.playState=0,a.paused=!1,a.instanceCount=0,a.instanceOptions={},a._iO={},I(),a.isHTML5&&(a.position=0)),(!a.instanceCount||a._iO.multiShotEvents)&&b&&b.apply(a))};this._whileloading=
+function(b,c,e,d){var f=a._iO;a.bytesLoaded=b;a.bytesTotal=c;a.duration=Math.floor(e);a.bufferLength=d;a.durationEstimate=!a.isHTML5&&!f.isMovieStar?f.duration?a.duration>f.duration?a.duration:f.duration:parseInt(a.bytesTotal/a.bytesLoaded*a.duration,10):a.duration;a.isHTML5||(a.buffered=[{start:0,end:a.duration}]);(3!==a.readyState||a.isHTML5)&&f.whileloading&&f.whileloading.apply(a)};this._whileplaying=function(b,c,e,d,f){var h=a._iO;if(isNaN(b)||null===b)return!1;a.position=Math.max(0,b);a._processOnPosition();
+!a.isHTML5&&8<k&&(h.usePeakData&&(c!==g&&c)&&(a.peakData={left:c.leftPeak,right:c.rightPeak}),h.useWaveformData&&(e!==g&&e)&&(a.waveformData={left:e.split(","),right:d.split(",")}),h.useEQData&&(f!==g&&f&&f.leftEQ)&&(b=f.leftEQ.split(","),a.eqData=b,a.eqData.left=b,f.rightEQ!==g&&f.rightEQ&&(a.eqData.right=f.rightEQ.split(","))));1===a.playState&&(!a.isHTML5&&(8===k&&!a.position&&a.isBuffering)&&a._onbufferchange(0),h.whileplaying&&h.whileplaying.apply(a));return!0};this._oncaptiondata=function(b){a.captiondata=
+b;a._iO.oncaptiondata&&a._iO.oncaptiondata.apply(a,[b])};this._onmetadata=function(b,c){var e={},d,f;d=0;for(f=b.length;d<f;d++)e[b[d]]=c[d];a.metadata=e;a._iO.onmetadata&&a._iO.onmetadata.apply(a)};this._onid3=function(b,c){var e=[],d,f;d=0;for(f=b.length;d<f;d++)e[b[d]]=c[d];a.id3=t(a.id3,e);a._iO.onid3&&a._iO.onid3.apply(a)};this._onconnect=function(b){b=1===b;if(a.connected=b)a.failures=0,p(a.id)&&(a.getAutoPlay()?a.play(g,a.getAutoPlay()):a._iO.autoLoad&&a.load()),a._iO.onconnect&&a._iO.onconnect.apply(a,
+[b])};this._ondataerror=function(){0<a.playState&&a._iO.ondataerror&&a._iO.ondataerror.apply(a)}};qa=function(){return l.body||l._docElement||l.getElementsByTagName("div")[0]};T=function(b){return l.getElementById(b)};t=function(b,e){var d=b||{},a,f;a=e===g?c.defaultOptions:e;for(f in a)a.hasOwnProperty(f)&&d[f]===g&&(d[f]="object"!==typeof a[f]||null===a[f]?a[f]:t(d[f],a[f]));return d};U={onready:1,ontimeout:1,defaultOptions:1,flash9Options:1,movieStarOptions:1};ka=function(b,e){var d,a=!0,f=e!==
+g,h=c.setupOptions;for(d in b)if(b.hasOwnProperty(d))if("object"!==typeof b[d]||null===b[d]||b[d]instanceof Array||b[d]instanceof RegExp)f&&U[e]!==g?c[e][d]=b[d]:h[d]!==g?(c.setupOptions[d]=b[d],c[d]=b[d]):U[d]===g?(H(v(c[d]===g?"setupUndef":"setupError",d),2),a=!1):c[d]instanceof Function?c[d].apply(c,b[d]instanceof Array?b[d]:[b[d]]):c[d]=b[d];else if(U[d]===g)H(v(c[d]===g?"setupUndef":"setupError",d),2),a=!1;else return ka(b[d],d);return a};var bb=function(b){var b=db.call(b),c=b.length;ea?(b[1]=
+"on"+b[1],3<c&&b.pop()):3===c&&b.push(!1);return b},cb=function(b,c){var d=b.shift(),a=[gb[c]];if(ea)d[a](b[0],b[1]);else d[a].apply(d,b)},ea=i.attachEvent,gb={add:ea?"attachEvent":"addEventListener",remove:ea?"detachEvent":"removeEventListener"};n={add:function(){cb(bb(arguments),"add")},remove:function(){cb(bb(arguments),"remove")}};x={abort:m(function(){}),canplay:m(function(){var b=this._s,c;if(b._html5_canplay)return!0;b._html5_canplay=!0;b._onbufferchange(0);c=b._iO.position!==g&&!isNaN(b._iO.position)?
+b._iO.position/1E3:null;if(b.position&&this.currentTime!==c)try{this.currentTime=c}catch(d){}b._iO._oncanplay&&b._iO._oncanplay()}),canplaythrough:m(function(){var b=this._s;b.loaded||(b._onbufferchange(0),b._whileloading(b.bytesLoaded,b.bytesTotal,b._get_html5_duration()),b._onload(!0))}),ended:m(function(){this._s._onfinish()}),error:m(function(){this._s._onload(!1)}),loadeddata:m(function(){var b=this._s;!b._loaded&&!Aa&&(b.duration=b._get_html5_duration())}),loadedmetadata:m(function(){}),loadstart:m(function(){this._s._onbufferchange(1)}),
+play:m(function(){this._s._onbufferchange(0)}),playing:m(function(){this._s._onbufferchange(0)}),progress:m(function(b){var c=this._s,d,a,f=0,f=b.target.buffered;d=b.loaded||0;var g=b.total||1;c.buffered=[];if(f&&f.length){d=0;for(a=f.length;d<a;d++)c.buffered.push({start:1E3*f.start(d),end:1E3*f.end(d)});f=1E3*(f.end(0)-f.start(0));d=f/(1E3*b.target.duration)}isNaN(d)||(c._onbufferchange(0),c._whileloading(d,g,c._get_html5_duration()),d&&(g&&d===g)&&x.canplaythrough.call(this,b))}),ratechange:m(function(){}),
+suspend:m(function(b){var c=this._s;x.progress.call(this,b);c._onsuspend()}),stalled:m(function(){}),timeupdate:m(function(){this._s._onTimer()}),waiting:m(function(){this._s._onbufferchange(1)})};ba=function(b){return b.serverURL||b.type&&S(b.type)?!1:b.type?Q({type:b.type}):Q({url:b.url})||c.html5Only};wa=function(b,c){b&&(b.src=c,b._called_load=!1);w&&(ya=null)};Q=function(b){if(!c.useHTML5Audio||!c.hasHTML5)return!1;var e=b.url||null,b=b.type||null,d=c.audioFormats,a;if(b&&c.html5[b]!==g)return c.html5[b]&&
+!S(b);if(!y){y=[];for(a in d)d.hasOwnProperty(a)&&(y.push(a),d[a].related&&(y=y.concat(d[a].related)));y=RegExp("\\.("+y.join("|")+")(\\?.*)?$","i")}a=e?e.toLowerCase().match(y):null;!a||!a.length?b&&(e=b.indexOf(";"),a=(-1!==e?b.substr(0,e):b).substr(6)):a=a[1];a&&c.html5[a]!==g?e=c.html5[a]&&!S(a):(b="audio/"+a,e=c.html5.canPlayType({type:b}),e=(c.html5[a]=e)&&c.html5[b]&&!S(b));return e};Sa=function(){function b(a){var b,d,f=b=!1;if(!e||"function"!==typeof e.canPlayType)return b;if(a instanceof
+Array){b=0;for(d=a.length;b<d;b++)if(c.html5[a[b]]||e.canPlayType(a[b]).match(c.html5Test))f=!0,c.html5[a[b]]=!0,c.flash[a[b]]=!!a[b].match(Xa);b=f}else a=e&&"function"===typeof e.canPlayType?e.canPlayType(a):!1,b=!(!a||!a.match(c.html5Test));return b}if(!c.useHTML5Audio||!c.hasHTML5)return!1;var e=Audio!==g?Ba&&10>opera.version()?new Audio(null):new Audio:null,d,a,f={},h;h=c.audioFormats;for(d in h)if(h.hasOwnProperty(d)&&(a="audio/"+d,f[d]=b(h[d].type),f[a]=f[d],d.match(Xa)?(c.flash[d]=!0,c.flash[a]=
+!0):(c.flash[d]=!1,c.flash[a]=!1),h[d]&&h[d].related))for(a=h[d].related.length-1;0<=a;a--)f["audio/"+h[d].related[a]]=f[d],c.html5[h[d].related[a]]=f[d],c.flash[h[d].related[a]]=f[d];f.canPlayType=e?b:null;c.html5=t(c.html5,f);return!0};na={};v=function(){};Y=function(b){8===k&&(1<b.loops&&b.stream)&&(b.stream=!1);return b};Z=function(b){if(b&&!b.usePolicyFile&&(b.onid3||b.usePeakData||b.useWaveformData||b.useEQData))b.usePolicyFile=!0;return b};H=function(){};ha=function(){return!1};La=function(b){for(var c in b)b.hasOwnProperty(c)&&
+"function"===typeof b[c]&&(b[c]=ha)};sa=function(b){b===g&&(b=!1);(s||b)&&c.disable(b)};Ma=function(b){var e=null;if(b)if(b.match(/\.swf(\?.*)?$/i)){if(e=b.substr(b.toLowerCase().lastIndexOf(".swf?")+4))return b}else b.lastIndexOf("/")!==b.length-1&&(b+="/");b=(b&&-1!==b.lastIndexOf("/")?b.substr(0,b.lastIndexOf("/")+1):"./")+c.movieURL;c.noSWFCache&&(b+="?ts="+(new Date).getTime());return b};ma=function(){k=parseInt(c.flashVersion,10);8!==k&&9!==k&&(c.flashVersion=k=8);var b=c.debugMode||c.debugFlash?
+"_debug.swf":".swf";c.useHTML5Audio&&(!c.html5Only&&c.audioFormats.mp4.required&&9>k)&&(c.flashVersion=k=9);c.version=c.versionNumber+(c.html5Only?" (HTML5-only mode)":9===k?" (AS3/Flash 9)":" (AS2/Flash 8)");8<k?(c.defaultOptions=t(c.defaultOptions,c.flash9Options),c.features.buffering=!0,c.defaultOptions=t(c.defaultOptions,c.movieStarOptions),c.filePatterns.flash9=RegExp("\\.(mp3|"+$a.join("|")+")(\\?.*)?$","i"),c.features.movieStar=!0):c.features.movieStar=!1;c.filePattern=c.filePatterns[8!==k?
+"flash9":"flash8"];c.movieURL=(8===k?"soundmanager2.swf":"soundmanager2_flash9.swf").replace(".swf",b);c.features.peakData=c.features.waveformData=c.features.eqData=8<k};Ka=function(b,c){if(!h)return!1;h._setPolling(b,c)};ra=function(){c.debugURLParam.test(ga)&&(c.debugMode=!0)};p=this.getSoundById;G=function(){var b=[];c.debugMode&&b.push("sm2_debug");c.debugFlash&&b.push("flash_debug");c.useHighPerformance&&b.push("high_performance");return b.join(" ")};ua=function(){v("fbHandler");var b=c.getMoviePercent(),
+e={type:"FLASHBLOCK"};if(c.html5Only)return!1;c.ok()?c.oMC&&(c.oMC.className=[G(),"movieContainer","swf_loaded"+(c.didFlashBlock?" swf_unblocked":"")].join(" ")):(u&&(c.oMC.className=G()+" movieContainer "+(null===b?"swf_timedout":"swf_error")),c.didFlashBlock=!0,B({type:"ontimeout",ignoreInit:!0,error:e}),F(e))};la=function(b,c,d){r[b]===g&&(r[b]=[]);r[b].push({method:c,scope:d||null,fired:!1})};B=function(b){b||(b={type:c.ok()?"onready":"ontimeout"});if(!j&&b&&!b.ignoreInit||"ontimeout"===b.type&&
+(c.ok()||s&&!b.ignoreInit))return!1;var e={success:b&&b.ignoreInit?c.ok():!s},d=b&&b.type?r[b.type]||[]:[],a=[],f,e=[e],g=u&&!c.ok();b.error&&(e[0].error=b.error);b=0;for(f=d.length;b<f;b++)!0!==d[b].fired&&a.push(d[b]);if(a.length){b=0;for(f=a.length;b<f;b++)a[b].scope?a[b].method.apply(a[b].scope,e):a[b].method.apply(this,e),g||(a[b].fired=!0)}return!0};C=function(){i.setTimeout(function(){c.useFlashBlock&&ua();B();"function"===typeof c.onload&&c.onload.apply(i);c.waitForWindowLoad&&n.add(i,"load",
+C)},1)};za=function(){if(A!==g)return A;var b=!1,c=navigator,d=c.plugins,a,f=i.ActiveXObject;if(d&&d.length)(c=c.mimeTypes)&&(c["application/x-shockwave-flash"]&&c["application/x-shockwave-flash"].enabledPlugin&&c["application/x-shockwave-flash"].enabledPlugin.description)&&(b=!0);else if(f!==g&&!q.match(/MSAppHost/i)){try{a=new f("ShockwaveFlash.ShockwaveFlash")}catch(h){}b=!!a}return A=b};Ra=function(){var b,e,d=c.audioFormats;if(ca&&q.match(/os (1|2|3_0|3_1)/i))c.hasHTML5=!1,c.html5Only=!0,c.oMC&&
+(c.oMC.style.display="none");else if(c.useHTML5Audio&&(!c.html5||!c.html5.canPlayType))c.hasHTML5=!1;if(c.useHTML5Audio&&c.hasHTML5)for(e in d)if(d.hasOwnProperty(e)&&(d[e].required&&!c.html5.canPlayType(d[e].type)||c.preferFlash&&(c.flash[e]||c.flash[d[e].type])))b=!0;c.ignoreFlash&&(b=!1);c.html5Only=c.hasHTML5&&c.useHTML5Audio&&!b;return!c.html5Only};aa=function(b){var e,d,a=0;if(b instanceof Array){e=0;for(d=b.length;e<d;e++)if(b[e]instanceof Object){if(c.canPlayMIME(b[e].type)){a=e;break}}else if(c.canPlayURL(b[e])){a=
+e;break}b[a].url&&(b[a]=b[a].url);b=b[a]}return b};Na=function(b){b._hasTimer||(b._hasTimer=!0,!Ca&&c.html5PollingInterval&&(null===P&&0===$&&(P=i.setInterval(Pa,c.html5PollingInterval)),$++))};Oa=function(b){b._hasTimer&&(b._hasTimer=!1,!Ca&&c.html5PollingInterval&&$--)};Pa=function(){var b;if(null!==P&&!$)return i.clearInterval(P),P=null,!1;for(b=c.soundIDs.length-1;0<=b;b--)c.sounds[c.soundIDs[b]].isHTML5&&c.sounds[c.soundIDs[b]]._hasTimer&&c.sounds[c.soundIDs[b]]._onTimer()};F=function(b){b=b!==
+g?b:{};"function"===typeof c.onerror&&c.onerror.apply(i,[{type:b.type!==g?b.type:null}]);b.fatal!==g&&b.fatal&&c.disable()};Ta=function(){if(!Va||!za())return!1;var b=c.audioFormats,e,d;for(d in b)if(b.hasOwnProperty(d)&&("mp3"===d||"mp4"===d))if(c.html5[d]=!1,b[d]&&b[d].related)for(e=b[d].related.length-1;0<=e;e--)c.html5[b[d].related[e]]=!1};this._setSandboxType=function(){};this._externalInterfaceOK=function(){if(c.swfLoaded)return!1;c.swfLoaded=!0;da=!1;Va&&Ta();setTimeout(ia,z?100:1)};X=function(b,
+e){function d(a,b){return'<param name="'+a+'" value="'+b+'" />'}if(J&&K)return!1;if(c.html5Only)return ma(),c.oMC=T(c.movieID),ia(),K=J=!0,!1;var a=e||c.url,f=c.altURL||a,h=qa(),i=G(),k=null,k=l.getElementsByTagName("html")[0],j,n,m,k=k&&k.dir&&k.dir.match(/rtl/i),b=b===g?c.id:b;ma();c.url=Ma(Ea?a:f);e=c.url;c.wmode=!c.wmode&&c.useHighPerformance?"transparent":c.wmode;if(null!==c.wmode&&(q.match(/msie 8/i)||!z&&!c.useHighPerformance)&&navigator.platform.match(/win32|win64/i))Qa.push(na.spcWmode),
+c.wmode=null;h={name:b,id:b,src:e,quality:"high",allowScriptAccess:c.allowScriptAccess,bgcolor:c.bgColor,pluginspage:Ya+"www.macromedia.com/go/getflashplayer",title:"JS/Flash audio component (SoundManager 2)",type:"application/x-shockwave-flash",wmode:c.wmode,hasPriority:"true"};c.debugFlash&&(h.FlashVars="debug=1");c.wmode||delete h.wmode;if(z)a=l.createElement("div"),n=['<object id="'+b+'" data="'+e+'" type="'+h.type+'" title="'+h.title+'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="'+
+Ya+'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0">',d("movie",e),d("AllowScriptAccess",c.allowScriptAccess),d("quality",h.quality),c.wmode?d("wmode",c.wmode):"",d("bgcolor",c.bgColor),d("hasPriority","true"),c.debugFlash?d("FlashVars",h.FlashVars):"","</object>"].join("");else for(j in a=l.createElement("embed"),h)h.hasOwnProperty(j)&&a.setAttribute(j,h[j]);ra();i=G();if(h=qa())if(c.oMC=T(c.movieID)||l.createElement("div"),c.oMC.id)m=c.oMC.className,c.oMC.className=
+(m?m+" ":"movieContainer")+(i?" "+i:""),c.oMC.appendChild(a),z&&(j=c.oMC.appendChild(l.createElement("div")),j.className="sm2-object-box",j.innerHTML=n),K=!0;else{c.oMC.id=c.movieID;c.oMC.className="movieContainer "+i;j=i=null;c.useFlashBlock||(c.useHighPerformance?i={position:"fixed",width:"8px",height:"8px",bottom:"0px",left:"0px",overflow:"hidden"}:(i={position:"absolute",width:"6px",height:"6px",top:"-9999px",left:"-9999px"},k&&(i.left=Math.abs(parseInt(i.left,10))+"px")));eb&&(c.oMC.style.zIndex=
+1E4);if(!c.debugFlash)for(m in i)i.hasOwnProperty(m)&&(c.oMC.style[m]=i[m]);try{z||c.oMC.appendChild(a),h.appendChild(c.oMC),z&&(j=c.oMC.appendChild(l.createElement("div")),j.className="sm2-object-box",j.innerHTML=n),K=!0}catch(p){throw Error(v("domError")+" \n"+p.toString());}}return J=!0};W=function(){if(c.html5Only)return X(),!1;if(h||!c.url)return!1;h=c.getMovie(c.id);h||(N?(z?c.oMC.innerHTML=ta:c.oMC.appendChild(N),N=null,J=!0):X(c.id,c.url),h=c.getMovie(c.id));"function"===typeof c.oninitmovie&&
+setTimeout(c.oninitmovie,1);return!0};D=function(){setTimeout(Ja,1E3)};Ja=function(){var b,e=!1;if(!c.url||O)return!1;O=!0;n.remove(i,"load",D);if(da&&!Da)return!1;j||(b=c.getMoviePercent(),0<b&&100>b&&(e=!0));setTimeout(function(){b=c.getMoviePercent();if(e)return O=!1,i.setTimeout(D,1),!1;!j&&Wa&&(null===b?c.useFlashBlock||0===c.flashLoadTimeout?c.useFlashBlock&&ua():B({type:"ontimeout",ignoreInit:!0}):0!==c.flashLoadTimeout&&sa(!0))},c.flashLoadTimeout)};V=function(){if(Da||!da)return n.remove(i,
+"focus",V),!0;Da=Wa=!0;O=!1;D();n.remove(i,"focus",V);return!0};L=function(b){if(j)return!1;if(c.html5Only)return j=!0,C(),!0;var e=!0,d;if(!c.useFlashBlock||!c.flashLoadTimeout||c.getMoviePercent())j=!0,s&&(d={type:!A&&u?"NO_FLASH":"INIT_TIMEOUT"});if(s||b)c.useFlashBlock&&c.oMC&&(c.oMC.className=G()+" "+(null===c.getMoviePercent()?"swf_timedout":"swf_error")),B({type:"ontimeout",error:d,ignoreInit:!0}),F(d),e=!1;s||(c.waitForWindowLoad&&!ja?n.add(i,"load",C):C());return e};Ia=function(){var b,e=
+c.setupOptions;for(b in e)e.hasOwnProperty(b)&&(c[b]===g?c[b]=e[b]:c[b]!==e[b]&&(c.setupOptions[b]=c[b]))};ia=function(){if(j)return!1;if(c.html5Only)return j||(n.remove(i,"load",c.beginDelayedInit),c.enabled=!0,L()),!0;W();try{h._externalInterfaceTest(!1),Ka(!0,c.flashPollingInterval||(c.useHighPerformance?10:50)),c.debugMode||h._disableDebug(),c.enabled=!0,c.html5Only||n.add(i,"unload",ha)}catch(b){return F({type:"JS_TO_FLASH_EXCEPTION",fatal:!0}),sa(!0),L(),!1}L();n.remove(i,"load",c.beginDelayedInit);
+return!0};E=function(){if(M)return!1;M=!0;Ia();ra();!A&&c.hasHTML5&&c.setup({useHTML5Audio:!0,preferFlash:!1});Sa();c.html5.usingFlash=Ra();u=c.html5.usingFlash;!A&&u&&(Qa.push(na.needFlash),c.setup({flashLoadTimeout:1}));l.removeEventListener&&l.removeEventListener("DOMContentLoaded",E,!1);W();return!0};xa=function(){"complete"===l.readyState&&(E(),l.detachEvent("onreadystatechange",xa));return!0};pa=function(){ja=!0;n.remove(i,"load",pa)};oa=function(){if(Ca&&(c.setupOptions.useHTML5Audio=!0,c.setupOptions.preferFlash=
+!1,ca||Ua&&!q.match(/android\s2\.3/i)))ca&&(c.ignoreFlash=!0),w=!0};oa();za();n.add(i,"focus",V);n.add(i,"load",D);n.add(i,"load",pa);l.addEventListener?l.addEventListener("DOMContentLoaded",E,!1):l.attachEvent?l.attachEvent("onreadystatechange",xa):F({type:"NO_DOM2_EVENTS",fatal:!0})}var fa=null;if(void 0===i.SM2_DEFER||!SM2_DEFER)fa=new R;i.SoundManager=R;i.soundManager=fa})(window);
View
71 public/soundmanagerv297a-20130101/README.rdoc
@@ -0,0 +1,71 @@
+== SoundManager 2: JavaScript Sound for the Web
+
+By wrapping and extending HTML5 and Flash Audio APIs, SoundManager 2 brings reliable cross-platform audio to JavaScript.
+
+== HTML5 Audio() Support
+
+ * 100% Flash-free MP3 + MP4/AAC where supported
+ * Compatible with Apple iPad 3.2, iPhone/iOS 4 and newer
+ * Fallback to Flash for MP3/MP4 support, as needed
+ * SM2 API is transparent; HTML5/flash switching handled internally
+ * HTML5 API support approximates Flash 8 API features
+ * Some other formats (WAV/OGG) supported via HTML5, depending on browser
+ * See "useHTML5Audio" property for implementation details
+
+== Basic API Features (Flash 8)
+
+ * Load, stop, play, pause, mute, seek, pan and volume control of sounds from Javascript
+ * Events: onload, whileloading, whileplaying, onfinish and more
+ * ID3V1 and ID3V2 tag support for MP3s (title, artist, genre etc.)
+
+== Shiny Flash 9 Features
+
+ * RTMP / Flash Media Server streaming support (new, experimental)
+ * MPEG-4 (AAC, HE-AAC, H.264) audio support
+ * "MultiShot" play (layered/chorusing effects)
+ * Waveform/frequency spectrum data
+ * Peak (L/R channel volume) data
+ * Audio buffering state/event handling
+
+== General Tech Stuff
+
+ * Full API Documentation with examples and notes
+ * console.log()-style debug output and troubleshooting tools
+ * Community-based discussion/support
+
+== As Heard On The Internets
+
+A few nifty sites that have implemented SM2 for driving audio:
+
+ * SoundCloud / The Cloud Player
+ * last.fm
+ * Opera (media player component)
+ * 8tracks
+ * Discogs
+ * The Hype Machine
+ * nyan.cat
+ * turntable.fm
+ * AudioGalaxy
+
+== Project home, documentation, live demos etc.:
+
+http://www.schillmania.com/projects/soundmanager2/
+
+== Compiling JS builds (-nodebug, -jsmin) and Flash components, AS2/AS3 to SWF
+
+An Ant build file defines the tasks for compiling JS and SWF components, useful if you make changes to the SM2 source and want to recompile.
+Google's Closure Compiler is used for the JS. AS2 compilation is done by MTASC, and AS3 is handled by Adobe's Open Source Flex SDK (mxmlc) compiler.
+Refer to the build.xml file for compiler downloads and path definitions.
+
+== Versioning / Development Notes
+
+Releases are versioned by date, e.g., V2.97a.20110424 and are tagged as such.*
+The latest official release is always on trunk/master.
+Post-release development builds may be available on the appropriate +DEV branch, eg., V2.97a.20110801+DEV
+
+== Forks and Pull Requests
+
+Firstly, thank you for wanting to contribute! Bug fixes and tweaks are welcomed, particularly if they follow the general coding style of the project.
+If making a pull request, use the project's current +DEV development branch as the merge target instead of "master", if possible (please and thank-you.)
+
+* SoundManager 2 has been at "version" 2.97 for a long time, because 2.97 was arguably the best llama-ass-whipping version of WinAmp. (WinAmp 3 was not as good, and WinAmp 5 was "the best of 2 and 3 combined.") This MP3 player was my favourite Windows app during the 90's, and is missed as there's nothing quite like it on OS X where I spend most of my time these days.
View
BIN public/soundmanagerv297a-20130101/demo/360-player/360 button - large.psd
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/soundmanagerv297a-20130101/demo/360-player/360 button.psd
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/soundmanagerv297a-20130101/demo/360-player/360-button-pause-light.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/soundmanagerv297a-20130101/demo/360-player/360-button-pause-light.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/soundmanagerv297a-20130101/demo/360-player/360-button-pause.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/soundmanagerv297a-20130101/demo/360-player/360-button-pause.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/soundmanagerv297a-20130101/demo/360-player/360-button-play-light.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/soundmanagerv297a-20130101/demo/360-player/360-button-play-light.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/soundmanagerv297a-20130101/demo/360-player/360-button-play.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/soundmanagerv297a-20130101/demo/360-player/360-button-play.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/soundmanagerv297a-20130101/demo/360-player/360-button-vis-pause-light.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/soundmanagerv297a-20130101/demo/360-player/360-button-vis-pause-light.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/soundmanagerv297a-20130101/demo/360-player/360-button-vis-pause.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/soundmanagerv297a-20130101/demo/360-player/360-button-vis-pause.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/soundmanagerv297a-20130101/demo/360-player/360-button-vis-play-light.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/soundmanagerv297a-20130101/demo/360-player/360-button-vis-play-light.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/soundmanagerv297a-20130101/demo/360-player/360-button-vis-play.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/soundmanagerv297a-20130101/demo/360-player/360-button-vis-play.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
156 public/soundmanagerv297a-20130101/demo/360-player/360player-visualization.css
@@ -0,0 +1,156 @@
+/* larger canvas, spectrum + EQ visualization and other items */
+
+.ui360-vis,
+.ui360-vis .sm2-360ui,
+.sm2-inline-list .ui360-vis {
+ /* size of the container for the circle, etc. */
+ width:256px;
+ height:256px;
+}
+
+.ui360-vis {
+ position:relative;
+ /* a little extra spacing */
+ padding-top:1px;
+ padding-bottom:1px;
+ margin-bottom:-18px; /* approximate "line height" we want */
+ padding-left:248px;
+ margin-left:0px;
+ background-position:22.6% 50%; /* (~109px) initial play button position */
+}
+
+.sm2-inline-list .ui360-vis {
+ cursor:pointer
+}
+
+.ui360-vis a {
+ font:14px "helvetica neue",helvetica,monaco,lucida,terminal,monospace;
+ white-space:nowrap;
+ text-indent:0px; /* undo inline style */
+ top:46%; /* ehh. */
+}
+
+.sm2-inline-list .ui360-vis a {
+ line-height:256px;
+ top:auto;
+}
+
+.ui360-vis .sm2-360ui {
+ margin-left:-256px;
+}
+
+.ui360-vis .sm2-timing {
+ font:bold 24px "helvetica neue",helvetica,monaco,lucida,terminal,monospace;
+ color:#333;
+ text-align:center;
+ line-height:256px;
+ text-indent:0px;
+}
+
+.sm2-inline-list .ui360-vis,
+.sm2-inline-list .ui360-vis .sm2-360ui {
+ margin-left:0px;
+}
+
+.sm2-inline-list .ui360-vis {
+ margin:8px 13px 7px 0px;
+ padding-left:0px;
+ background-position:50% 50%; /* initial play button position */
+}
+
+.sm2-inline-list .ui360-vis .sm2-360ui {
+ border:1px solid #eee;
+ /* offset the border */
+ margin-left:-1px;
+ margin-top:-1px;
+}
+
+.sm2-inline-list .ui360-vis a {
+ position:absolute;
+ display:inline;
+ left:0px;
+ bottom:0px;
+ top:1px;
+ width:100%; /* 2px padding in box */
+ height:99%; /* dumb vertical hack */
+ *height:256px; /* IE is dumb. */
+ overflow:hidden;
+ font-size:small;
+ font-weight:300;
+ color:#333;
+ margin:0px;
+ padding:0px;
+ line-height:488px; /* bottom vertical alignment for text */
+ *line-height:480px; /* IE again */
+ text-align:center;
+ border-radius:0px;
+}
+
+.sm2-inline-list .ui360 a:hover {
+ background-color:transparent; /* reset */
+}
+
+.sm2-inline-list .ui360-vis:hover .sm2-360ui,
+.sm2-inline-list .ui360-vis a.sm2_link:hover,
+.sm2-inline-list .ui360-vis a.sm2_link:active,
+.sm2-inline-list .ui360-vis a.sm2_link:focus {
+ background-color:transparent;
+}
+
+.sm2-inline-list .ui360-vis:hover a.sm2_link {
+ background-color:#fafafa;
+ *background-color:transparent; /* eh, screw IE. */
+}
+
+/* Use a bigger loading image for this layout */
+
+.ui360-vis .sm2-360btn,
+.ui360-vis .sm2-360ui.sm2_paused .sm2-360btn,
+.ui360-vis .sm2-360ui.sm2_playing .sm2-360btn {
+ width:48px;
+ height:48px;
+ margin-left:-24px;
+ margin-top:-24px;
+ border-radius: none;
+}
+
+.ui360-vis,
+.ui360-vis .sm2-360ui.sm2_paused .sm2-360btn,
+.ui360-vis .sm2-360btn-default {
+ background:transparent url(360-button-vis-play.png) no-repeat 50% 50%;
+ background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAABuVBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADv7++lpaXr6+uAgIDk5OQzMzPt7e1tbW3n5+dgYGDW1tZNTU10dHQ5OTnw8PCvr6/e3t6JiYlAQEDb29vo6OgrKyuqqqrq6uq4uLjf399AQEDGxsbq6uqAgIDY2Nje3t61tbXp6enU1NTu7u7r6+vl5eXt7e2fn5/n5+fDw8Ph4eHv7+/t7e3CwsLW1tbu7u7b29vw8PDm5uYgICDp6enY2Nji4uLo6Ojm5uakpKTS0tLPz8/h4eHw8PDs7Ozj4+Pa2trg4ODx8fHT09Pk5OTPz8/S0tLBwcGmpqawsLCOjo7h4eHn5+fo6OgAAADY2NjNzc3n5+cAAADd3d3Gxsbu7u7t7e0AAADX19fl5eXi4uLf39/Hx8fn5+fs7Ozg4ODR0dHX19e4uLjv7+/z8/P09PTy8vL19fXv7+/n5+fx8fH29vbs7Ozq6urm5ubo6Ojw8PDu7u7p6enr6+sAAAB/f3/Z2dn39/fh4eGOjo4ODg7t7e3l5eWWlpba2tqjo6NVVVXk5OTe3t65ubnMzMzExMTf39/GxsampqZiYmJNcTiZAAAAbXRSTlMAAQIEAwcFCAb5EdAImAXpB6oIUAoLCfsgZQ0EVrsGEr4ZYQgbsgpUYxikNd/aatQQli+R7rlUUdas6+8I+VaFruoOOV/S8Nq5sWL8UqmKUFsuHyTcrtsJm0z7C49V3NMKkdKXuk7S7oVeVSv7tAAEVwAAAu5JREFUeF6llmVz3DwURmNLsr1pmJmZmZmxzMwsybS8gXJfhl9cKXbHEK+TmZ4P/nDnOXN1NbalHD8CQ7QRGDmhnIQhBDYQnkhheRECSVIQQrLMHookAciUkHhBw1zVwuLShcJIpPDC0uJC1VxDQTaFx1srSvM3DUxU1TRVlWBjM7+0opUrQaupLSnrLK7ELIepwaCYmbiyuLOspJY38eeLykdGxzDhYQfKCmOjI+VFPkMQYF7NZD0l2DgFJrR+siYPegxBzBvqeoQxpgGw8qOuoTz3HGw9udUPCaFZIORhdS5blZOHjXWDBIdABusanb0S4MpqEw4XcNPqCrQFQQTN+XwPQ8CY5jcDUbB3KLdlg6hnQDZacqEgWA3a2rF6Jri9zWohwI6dXXK2QHZ3OqBw0qC7B6vnAPd0sxZMkHr7VNPD34YZgNrXK3EBSgPU9HJ4eIQDDDogQS4ow4QJxy4+MmKs4oYJZFhhggjQuMoKHoHzn3bsQx1HQOTClOkXLP6lviZTtjCjmn7B5g/izqszliBHTB+HDhl3PSJbwnxSS3n45HDkVLXkvCWg5Uws7eHgJ98/uKqxzLI9w3o6oXuwhd+OPNVEet0WtnU9/sWNJfz1u6cY1/VtLghQuRgk/PmBmT7hogJPXo3L8YQed3Nw8PWfuB89Eb8scUGUrl33DfH/N93BGeH6NUnkArh1O5FOuNETp2GR27cAE/iaJu6mz8HdCQnan+i96XQmdgaZ9PQ9+xMVoPJgNhrNhBKNzj5Q+E/AavH4SSz6OZRo7Mlj3oDDp7jyPJoKJfr8CpvAOUrQi6eppJaVZOrpCwTdP1cgr93UjKxoN9dka2KX8ealZtBADO3lG2+e7xRAd7Y0igOg2tYdBKD/CBIBenf/lYGJD2y8uv8OgaBDDkry3v57SlQXhL7f35OlwJOXGUBBl571JykmzCIE02T/s0tIASyf/R6Arr59fcM62G+8fnsVhdwFwq4Ov345Of/15wd0RYY81HHUTQAAAABJRU5ErkJggg==);
+ *background-image:url(360-button-vis-play.png);
+ _background:transparent url(360-button-vis-play.gif) no-repeat 50% 50%;
+ cursor:pointer;
+}
+
+.ui360-vis:hover .sm2-360btn,
+.ui360-vis .sm2-360btn-default:hover,
+.ui360-vis .sm2-360ui.sm2_paused .sm2-360btn:hover {
+ background:transparent url(360-button-vis-play-light.png) no-repeat 50% 50%;
+ _background:transparent url(360-button-vis-play.gif) no-repeat 50% 50%;
+ cursor:pointer;
+}
+
+
+.ui360-vis .sm2-360ui.sm2_playing .sm2-360btn:hover,
+.ui360-vis .sm2-360btn-playing:hover {
+ background:transparent url(360-button-vis-pause-light.png) no-repeat 50% 50%;
+ _background:transparent url(360-button-vis-pause-light.gif) no-repeat 50% 50%;
+ cursor:pointer;
+}
+
+.ui360-vis {
+ /* non-JS / before-loaded state */
+ background-position: 21% 50%;
+ _background:transparent url(360-button-vis-play.gif) no-repeat 21% 50%; /* IE 6-only: special crap GIF */
+}
+
+.ui360-vis .sm2-360btn-default {
+ /* real button, post-loaded state */
+ _background:transparent url(360-button-vis-play.gif) no-repeat 50% 50%; /* IE 6-only: special crap GIF */
+}
+
+.ui360-vis .sm2-360ui.sm2_dragging .sm2-360btn {
+ visibility: hidden;
+}
View
271 public/soundmanagerv297a-20130101/demo/360-player/360player.css
@@ -0,0 +1,271 @@
+/* General warning: Beta-ish. Code could be a bit cleaner. */
+
+.ui360, /* entire UI */
+.sm2-360ui { /* canvas container */
+ position:relative;
+}
+
+.ui360,
+.sm2-360ui {
+ min-width:50px; /* should always be at least this. */
+ min-height:50px;
+}
+
+.sm2-360ui {
+ width:50px;
+ height:50px;
+}
+
+.ui360,
+.ui360 * {
+ vertical-align:middle;
+}
+
+.sm2-360ui {
+ position:relative;
+ display:inline-block; /* firefox 3 et al */
+ float:left; /* IE 6+7, firefox 2 needs this, inline-block would work with fx3 and others */
+ *display:inline;
+/*
+ clear:left;
+*/
+}
+
+.sm2-360ui.sm2_playing,
+.sm2-360ui.sm2_paused {
+ /* bump on top when active */
+ z-index:10;
+}
+
+.ui360 a { /* .sm2_link class added to playable links by SM2 */
+ float:left;
+ display:inline;
+ position:relative;
+ color:#000;
+ text-decoration:none;
+ left:3px; /* slight spacing on left UI */
+ top:18px; /* vertical align */
+ text-indent:50px; /* make room for UI at left */
+}
+
+.ui360 a.sm2_link { /* SM2 has now started */
+ text-indent:0px; /* UI now in place. */
+}
+
+.ui360 a,
+.ui360 a:hover,
+.ui360 a:focus {
+ padding:2px;
+ margin-left:-2px;
+ margin-top:-2px;
+}
+
+.ui360 a:hover,
+.ui360 a:focus {
+ background:#eee;
+ border-radius:3px;
+ outline:none;
+}
+
+.ui360 .sm2-canvas {
+ position:absolute;
+ left:0px;
+ top:0px;
+}
+
+.ui360 .sm2-timing {
+ position:absolute;
+ display:block;
+ left:0px;
+ top:0px;
+ width:100%;
+ height:100%;
+ margin:0px;
+ font:11px "helvetica neue",helvetica,monaco,lucida,terminal,monospace;
+ color:#666;
+ text-align:center;
+ line-height:50px;
+}
+
+.ui360 .sm2-timing.alignTweak {
+ text-indent:1px; /* devious center-alignment tweak for Safari (might break things for others.) */
+}
+
+.ui360 .sm2-cover {
+ position:absolute;
+ left:0px;
+ top:0px;
+ width:100%;
+ height:100%;
+ z-index:2;
+ display:none;
+ background-image: url(data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==); /* old-skool bug: IE 9 won't catch mouse events otherwise. /smash */
+}
+
+.ui360 .sm2-360btn {
+ position:absolute;
+ display:block;
+ top:50%;
+ left:50%;
+/*
+ width:22px;
+ height:22px;
+ margin-left:-11px;
+ margin-top:-11px;
+*/
+ /* by default, cover whole space. make smaller when playing. */
+ width:50px;
+ height:50px;
+ margin-left:-25px;
+ margin-top:-25px;
+ border-radius: 25px;
+ cursor:pointer;
+ z-index:3;
+}
+
+.ui360 .sm2-360data {
+ display:inline-block;
+ font-family:helvetica;
+}
+
+.sm2-inline-block .ui360 .sm2-360btn,
+.ui360 .sm2-360ui.sm2_playing .sm2-360btn,
+.ui360 .sm2-360ui.sm2_paused .sm2-360btn {
+ /* smaller clickable button, in center */
+ width:22px;
+ height:22px;
+ margin-left:-11px;
+ margin-top:-11px;
+}
+
+.ui360 .sm2-360ui.sm2_playing .sm2-cover,
+.ui360 .sm2-360ui.sm2_paused .sm2-cover {
+ display:block;
+}
+
+/* this could be optimized a fair bit. */
+
+.ui360,
+.ui360 .sm2-360btn-default,
+.ui360 .sm2-360ui.sm2_paused .sm2-360btn {
+ background:transparent url(360-button-play.png) no-reoeat;
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAABoUlEQVR42sWVu2oCQRhGU/s8gpVYJeQJNkZSbiH4QNuLlQZS21sJayGYaOEFVFDxNiremj9zig2uzk5YQpKFg8PMd75ZZle9E5Ff4e+Ll8tlQuNoPI2vUcCYOdbIxCmm9F5T0YgNMmS/LebSwWdNa7VayXq9ls1mI9vtVna7nQBj5lgjQxYHN7KY3QkiUbDf7+V4PMrpdArBHGtkyOJc3/n1mVaUUl+F5/PZSrABDi4dpmKH3QkixQEHlw5TsccZmsRCoSD1et1ajkuHqdg/HA5GKZPJCOTzeanVasYMLh2mYsXDIGAoDuG6rlSr1WCdBxrcsTIWazgrQiHS6bSRYJ3XDzeq2O/3+9Ltdm9IpVIhstmslEqlUAY36ii8ZrMpjUbjhmQyKeA4jhSLRWMGN+rhOZ1Oh8ANuVxOyuUy40hwo163RK/XeyPQbrdjgYNr/ILAYDB41Gf1wZnFAQfX+iM0HA5fxuPx+2g0Ej22QoYsDq61mGsymTxMp9NX/Sk2yJDFsRZfXpzXbDZ7WiwW3nw+9zUKGDPHGpkL5V//mn7OJyJZApyzeUS5AAAAAElFTkSuQmCC);
+ *background-image: url(360-button-play.png);
+ background-repeat: no-repeat;
+}
+
+.ui360 {
+ /*
+ "fake" button shown before SM2 has started, non-JS/non-SM2 case etc.
+ background image will be removed via JS, in threeSixyPlayer.init()
+ */
+ background-position: 14px 50%;
+ _background:transparent url(360-button-play.gif) no-repeat 14px 50%; /* IE 6-only: special crap GIF */
+}
+
+.ui360 .sm2-360btn-default,
+.ui360 .sm2-360ui.sm2_paused .sm2-360btn {
+ background-position:50% 50%;
+ _background:transparent url(360-button-play.gif) no-repeat 50% 50%; /* IE 6-only: special crap GIF */
+}
+
+.ui360 .sm2-360btn-default,
+.ui360 .sm2-360ui.sm2_paused .sm2-360btn {
+ cursor:pointer;
+}
+
+.ui360 .sm2-360btn-default:hover,
+.ui360 .sm2-360ui.sm2_paused .sm2-360btn:hover {
+ background:transparent url(360-button-play-light.png) no-repeat 50% 50%;
+ _background:transparent url(360-button-play.gif) no-repeat 50% 50%;
+ cursor:pointer;
+}
+
+.ui360 .sm2-360ui.sm2_playing .sm2-360btn:hover,
+.ui360 .sm2-360btn-playing:hover {
+ background:transparent url(360-button-pause-light.png) no-repeat 50% 50%;
+ _background:transparent url(360-button-pause-light.gif) no-repeat 50% 50%;
+ cursor:pointer;
+}
+
+.ui360 .sm2-360ui.sm2_playing .sm2-timing {
+ visibility:visible;
+}
+
+.ui360 .sm2-360ui.sm2_buffering .sm2-timing {
+ visibility:hidden;
+}
+
+.ui360 .sm2-360ui .sm2-timing,
+.ui360 .sm2-360ui .sm2-360btn:hover + .sm2-timing,
+.ui360 .sm2-360ui.sm2_paused .sm2-timing {
+ visibility:hidden;
+}
+
+.ui360 .sm2-360ui.sm2_dragging .sm2-timing,
+.ui360 .sm2-360ui.sm2_dragging .sm2-360btn:hover + .sm2-timing {
+ /* paused + dragging */
+ visibility:visible;
+}
+
+.ui360 .sm2-360ui.sm2_playing .sm2-360btn,
+.ui360 .sm2-360ui.sm2_dragging .sm2-360btn,
+.ui360 .sm2-360ui.sm2_dragging .sm2-360btn:hover,
+.ui360 .sm2-360ui.sm2_dragging .sm2-360btn-playing:hover {
+ /* don't let pause button show on hover when dragging (or paused and dragging) */
+ background:transparent;
+ cursor:auto;
+}
+
+.ui360 .sm2-360ui.sm2_buffering .sm2-360btn,
+.ui360 .sm2-360ui.sm2_buffering .sm2-360btn:hover {
+ background:transparent url(icon_loading_spinner.gif) no-repeat 50% 50%;
+ opacity:0.5;
+ visibility:visible;
+}
+
+/* inline list style */
+
+.sm2-inline-list .ui360,
+.sm2-inline-block .ui360 {
+ position:relative;
+ display:inline-block;
+ float:left;
+ _display:inline;
+ margin-bottom:-15px;
+}
+
+.sm2-inline-list .ui360 {
+ /* inline player: minor tweak, tighten spacing */
+ margin-right:-2px;
+}
+
+.sm2-inline-block .ui360 {
+ margin-right:8px;
+}
+
+.sm2-inline-list .ui360 a {
+ display:none;
+}
+
+/* annotations */
+
+ul.ui360playlist {
+ list-style-type:none;
+}
+
+ul.ui360playlist,
+ul.ui360playlist li {
+ margin:0px;
+ padding:0px;
+}
+
+div.ui360 div.metadata {
+ display:none;
+}
+
+div.ui360 a span.metadata,
+div.ui360 a span.metadata * {
+ /* name of track, note etc. */
+ vertical-align:baseline;
+}
View
132 public/soundmanagerv297a-20130101/demo/360-player/canvas-visualization-basic.html
@@ -0,0 +1,132 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+<title>360&deg; MP3 player UI demo (SoundManager 2): Javascript + Canvas Visualization, basic example</title>
+<meta name="robots" content="noindex" />
+<meta name="description" content="Basic example of 360-degree circular control for MP3 links, with EQ and spectrum visualization options" />
+<!-- demo: make the fonts nicer etc. -->
+<link rel="stylesheet" type="text/css" href="../index.css" />
+
+<!-- soundManager.useFlashBlock: related CSS -->
+<link rel="stylesheet" type="text/css" href="../flashblock/flashblock.css" />
+
+<!-- required -->
+<link rel="stylesheet" type="text/css" href="360player.css" />
+<link rel="stylesheet" type="text/css" href="360player-visualization.css" />
+
+<!-- special IE-only canvas fix -->
+<!--[if IE]><script type="text/javascript" src="script/excanvas.js"></script><![endif]-->
+
+<!-- Apache-licensed animation library -->
+<script type="text/javascript" src="script/berniecode-animator.js"></script>
+
+<!-- the core stuff -->
+<script type="text/javascript" src="../../script/soundmanager2.js"></script>
+<script type="text/javascript" src="script/360player.js"></script>