From 753f60c7d4769fa72d3b910e491f37db6f130898 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Fri, 2 Aug 2013 17:19:21 -0500 Subject: dymaxion --- .../soundmanagerv297a-20101010/README.rdoc | 98 + .../demo/360-player/360 button.psd | Bin 0 -> 38695 bytes .../demo/360-player/360-button-pause-light.gif | Bin 0 -> 333 bytes .../demo/360-player/360-button-pause-light.png | Bin 0 -> 445 bytes .../demo/360-player/360-button-pause.gif | Bin 0 -> 333 bytes .../demo/360-player/360-button-pause.png | Bin 0 -> 440 bytes .../demo/360-player/360-button-play-light.gif | Bin 0 -> 442 bytes .../demo/360-player/360-button-play-light.png | Bin 0 -> 501 bytes .../demo/360-player/360-button-play.gif | Bin 0 -> 442 bytes .../demo/360-player/360-button-play.png | Bin 0 -> 487 bytes .../demo/360-player/360player-visualization.css | 88 + .../demo/360-player/360player.css | 258 ++ .../360-player/canvas-visualization-basic.html | 125 + .../demo/360-player/canvas-visualization.html | 328 +++ .../demo/360-player/demo-slider-controls.css | 179 ++ .../demo/360-player/demo-slider-controls.js | 711 +++++ .../demo/360-player/demo.css | 75 + .../demo/360-player/empty.gif | Bin 0 -> 43 bytes .../demo/360-player/icon_loading_dots.gif | Bin 0 -> 1456 bytes .../demo/360-player/icon_loading_spinner.gif | Bin 0 -> 530 bytes .../360-player/icon_loading_spinner_bigger.gif | Bin 0 -> 2545 bytes .../demo/360-player/index.html | 166 ++ .../demo/360-player/script/360player.js | 1270 +++++++++ .../demo/360-player/script/berniecode-animator.js | 674 +++++ .../demo/360-player/script/excanvas.js | 17 + .../demo/_image/360ui-screenshot1.png | Bin 0 -> 11720 bytes .../demo/_image/360ui-screenshot2.png | Bin 0 -> 13149 bytes .../demo/_image/360ui-screenshot3.png | Bin 0 -> 9913 bytes .../demo/_image/360ui-screenshot4.png | Bin 0 -> 20893 bytes .../demo/_image/8tracks-logo.png | Bin 0 -> 1217 bytes .../demo/_image/discogs.gif | Bin 0 -> 544 bytes .../demo/_image/flash9-dark.png | Bin 0 -> 240 bytes .../demo/_image/flash9.png | Bin 0 -> 285 bytes .../demo/_image/getsatisfaction-icon.gif | Bin 0 -> 89 bytes .../demo/_image/hue_thumb.png | Bin 0 -> 140 bytes .../demo/_image/lastfm.png | Bin 0 -> 2242 bytes .../demo/_image/mixcrate.png | Bin 0 -> 1685 bytes .../demo/_image/muxtape-logo.png | Bin 0 -> 3313 bytes .../demo/_image/new-bw.png | Bin 0 -> 201 bytes .../demo/_image/new-dark.png | Bin 0 -> 205 bytes .../soundmanagerv297a-20101010/demo/_image/new.png | Bin 0 -> 228 bytes .../demo/_image/opera.png | Bin 0 -> 2186 bytes .../demo/_image/picker_thumb.png | Bin 0 -> 136 bytes .../demo/_image/slider-1.png | Bin 0 -> 887 bytes .../demo/_image/slider-bar.gif | Bin 0 -> 101 bytes .../demo/_image/slider.png | Bin 0 -> 570 bytes .../demo/_image/soundcloud-thecloudplayer-logo.png | Bin 0 -> 5950 bytes .../demo/_image/speaker.png | Bin 0 -> 6410 bytes .../demo/_image/wedge.png | Bin 0 -> 1799 bytes .../demo/_mp3/1hz-10khz-sweep.mp3 | Bin 0 -> 157987 bytes .../soundmanagerv297a-20101010/demo/_mp3/440hz.mp3 | Bin 0 -> 40541 bytes .../soundmanagerv297a-20101010/demo/_mp3/880hz.mp3 | Bin 0 -> 40541 bytes .../demo/_mp3/background0.mp3 | Bin 0 -> 2160 bytes .../demo/_mp3/background1.mp3 | Bin 0 -> 2592 bytes .../demo/_mp3/background2.mp3 | Bin 0 -> 2592 bytes .../soundmanagerv297a-20101010/demo/_mp3/bass.mp3 | Bin 0 -> 106161 bytes .../demo/_mp3/button-0.mp3 | Bin 0 -> 10240 bytes .../demo/_mp3/button-1.mp3 | Bin 0 -> 10240 bytes .../demo/_mp3/click-high.mp3 | Bin 0 -> 4224 bytes .../demo/_mp3/click-low.mp3 | Bin 0 -> 4224 bytes .../soundmanagerv297a-20101010/demo/_mp3/coins.mp3 | Bin 0 -> 59349 bytes .../demo/_mp3/fancy-beer-bottle-pop.mp3 | Bin 0 -> 113266 bytes .../soundmanagerv297a-20101010/demo/_mp3/mak.mp3 | Bin 0 -> 34271 bytes .../demo/_mp3/mouseover.mp3 | Bin 0 -> 1353 bytes .../demo/_mp3/mouseover2.mp3 | Bin 0 -> 2991 bytes .../demo/_mp3/mouseover3.mp3 | Bin 0 -> 1274 bytes .../demo/_mp3/select.mp3 | Bin 0 -> 10557 bytes .../demo/_mp3/sine, square, sawtooth, rando.mp3 | Bin 0 -> 105742 bytes .../demo/animation-1/css/animation.css | 74 + .../demo/animation-1/image/ball.gif | Bin 0 -> 549 bytes .../demo/animation-1/index.html | 46 + .../demo/animation-1/script/animation.js | 189 ++ .../demo/animation-2a/bg-land.png | Bin 0 -> 1990 bytes .../demo/animation-2a/bg-sky.png | Bin 0 -> 1971 bytes .../demo/animation-2a/cursor-10.cur | Bin 0 -> 2238 bytes .../demo/animation-2a/cursor-11.cur | Bin 0 -> 2998 bytes .../demo/animation-2a/cursor-3.cur | Bin 0 -> 4286 bytes .../demo/animation-2a/cursor-4.cur | Bin 0 -> 4286 bytes .../demo/animation-2a/cursor-5.cur | Bin 0 -> 4286 bytes .../demo/animation-2a/cursor-6.cur | Bin 0 -> 4286 bytes .../demo/animation-2a/cursor-7.cur | Bin 0 -> 4286 bytes .../demo/animation-2a/cursor-8.cur | Bin 0 -> 4286 bytes .../demo/animation-2a/cursor-9.cur | Bin 0 -> 2238 bytes .../demo/animation-2a/cursor-shadow.png | Bin 0 -> 706 bytes .../demo/animation-2a/dot.png | Bin 0 -> 883 bytes .../demo/animation-2a/index.html | 360 +++ .../demo/animation-2b/audio/bonk.mp3 | Bin 0 -> 3342 bytes .../demo/animation-2b/audio/fingerplop.mp3 | Bin 0 -> 3760 bytes .../demo/animation-2b/audio/fingerplop2.mp3 | Bin 0 -> 2088 bytes .../demo/animation-2b/css/animation.css | 36 + .../demo/animation-2b/image/ball.gif | Bin 0 -> 549 bytes .../demo/animation-2b/image/point.png | Bin 0 -> 1938 bytes .../demo/animation-2b/index.html | 21 + .../demo/animation-2b/script/animation.js | 94 + .../demo/animation/audio/bonk.mp3 | Bin 0 -> 3342 bytes .../demo/animation/audio/fingerplop.mp3 | Bin 0 -> 2507 bytes .../demo/animation/audio/fingerplop2.mp3 | Bin 0 -> 1253 bytes .../demo/animation/index.html | 55 + .../soundmanagerv297a-20101010/demo/api/index.html | 676 +++++ .../demo/christmas-lights/christmaslights-home.js | 510 ++++ .../demo/christmas-lights/christmaslights.css | 111 + .../demo/christmas-lights/christmaslights.js | 519 ++++ .../demo/christmas-lights/image/bg-strip-dark.png | Bin 0 -> 237 bytes .../demo/christmas-lights/image/blank.png | Bin 0 -> 205 bytes .../christmas-lights/image/bulbs-32x32-bottom.png | Bin 0 -> 11323 bytes .../christmas-lights/image/bulbs-32x32-left.png | Bin 0 -> 12001 bytes .../christmas-lights/image/bulbs-32x32-right.png | Bin 0 -> 11509 bytes .../christmas-lights/image/bulbs-32x32-top.png | Bin 0 -> 12028 bytes .../christmas-lights/image/bulbs-50x50-bottom.png | Bin 0 -> 24562 bytes .../image/bulbs-50x50-fragments.png | Bin 0 -> 10529 bytes .../christmas-lights/image/bulbs-50x50-left.png | Bin 0 -> 27723 bytes .../christmas-lights/image/bulbs-50x50-right.png | Bin 0 -> 27329 bytes .../christmas-lights/image/bulbs-50x50-top.png | Bin 0 -> 24885 bytes .../demo/christmas-lights/image/bulbs-50x50.png | Bin 0 -> 6547 bytes .../christmas-lights/image/bulbs-64x64-bottom.png | Bin 0 -> 29776 bytes .../christmas-lights/image/bulbs-64x64-left.png | Bin 0 -> 28547 bytes .../christmas-lights/image/bulbs-64x64-right.png | Bin 0 -> 28209 bytes .../christmas-lights/image/bulbs-64x64-top.png | Bin 0 -> 31729 bytes .../christmas-lights/image/bulbs-72x72-bottom.png | Bin 0 -> 35104 bytes .../christmas-lights/image/bulbs-72x72-left.png | Bin 0 -> 33879 bytes .../christmas-lights/image/bulbs-72x72-right.png | Bin 0 -> 33442 bytes .../christmas-lights/image/bulbs-72x72-top.png | Bin 0 -> 37430 bytes .../christmas-lights/image/bulbs-96x96-bottom.png | Bin 0 -> 42948 bytes .../christmas-lights/image/bulbs-96x96-left.png | Bin 0 -> 37495 bytes .../christmas-lights/image/bulbs-96x96-right.png | Bin 0 -> 37860 bytes .../christmas-lights/image/bulbs-96x96-top.png | Bin 0 -> 44103 bytes .../demo/christmas-lights/index.html | 33 + .../demo/christmas-lights/sound/glass0.mp3 | Bin 0 -> 8149 bytes .../demo/christmas-lights/sound/glass1.mp3 | Bin 0 -> 8985 bytes .../demo/christmas-lights/sound/glass2.mp3 | Bin 0 -> 16416 bytes .../demo/christmas-lights/sound/glass3.mp3 | Bin 0 -> 23730 bytes .../demo/christmas-lights/sound/glass4.mp3 | Bin 0 -> 46111 bytes .../demo/christmas-lights/sound/glass5.mp3 | Bin 0 -> 19008 bytes .../yahoo-dom-event-animation-260.js | 35 + .../soundmanagerv297a-20101010/demo/debug.css | 25 + .../demo/flashblock/basic.html | 36 + .../demo/flashblock/flashblock.css | 99 + .../demo/flashblock/index.html | 125 + .../demo/flashblock/method1/flashblock.css | 61 + .../demo/flashblock/method1/flashblock.js | 90 + .../demo/flashblock/method1/index.html | 79 + .../soundmanagerv297a-20101010/demo/index.css | 1715 ++++++++++++ .../soundmanagerv297a-20101010/demo/index.html | 28 + .../soundmanagerv297a-20101010/demo/index.js | 368 +++ .../demo/jsAMP-preview/audio/going_outside.mp3 | Bin 0 -> 225416 bytes .../demo/jsAMP-preview/audio/office_lobby.mp3 | Bin 0 -> 158958 bytes .../demo/jsAMP-preview/audio/rain.mp3 | Bin 0 -> 131357 bytes .../demo/jsAMP-preview/audio/walking.mp3 | Bin 0 -> 64072 bytes .../demo/jsAMP-preview/backgrounds/bg1.jpg | Bin 0 -> 78753 bytes .../demo/jsAMP-preview/backgrounds/bg2.jpg | Bin 0 -> 21982 bytes .../demo/jsAMP-preview/backgrounds/bg3.jpg | Bin 0 -> 39413 bytes .../demo/jsAMP-preview/css/player-light.css | 543 ++++ .../demo/jsAMP-preview/css/player.css | 525 ++++ .../demo/jsAMP-preview/image/btn-next-1.gif | Bin 0 -> 54 bytes .../demo/jsAMP-preview/image/btn-next-1.png | Bin 0 -> 231 bytes .../demo/jsAMP-preview/image/btn-next.gif | Bin 0 -> 106 bytes .../demo/jsAMP-preview/image/btn-next.png | Bin 0 -> 218 bytes .../demo/jsAMP-preview/image/btn-prev-1.gif | Bin 0 -> 53 bytes .../demo/jsAMP-preview/image/btn-prev-1.png | Bin 0 -> 217 bytes .../demo/jsAMP-preview/image/btn-prev.gif | Bin 0 -> 107 bytes .../demo/jsAMP-preview/image/btn-prev.png | Bin 0 -> 212 bytes .../demo/jsAMP-preview/image/loop-light.png | Bin 0 -> 278 bytes .../demo/jsAMP-preview/image/loop.png | Bin 0 -> 270 bytes .../image/notreallyajaxandyouknowit-dark.gif | Bin 0 -> 557 bytes .../image/notreallyajaxandyouknowit-light.gif | Bin 0 -> 557 bytes .../demo/jsAMP-preview/image/sec-left-arr0.gif | Bin 0 -> 168 bytes .../demo/jsAMP-preview/image/sec-left-arr0.png | Bin 0 -> 214 bytes .../demo/jsAMP-preview/image/sec-left-arr1.gif | Bin 0 -> 108 bytes .../demo/jsAMP-preview/image/sec-left-arr1.png | Bin 0 -> 222 bytes .../demo/jsAMP-preview/image/sec-left-arr2.gif | Bin 0 -> 75 bytes .../demo/jsAMP-preview/image/sec-left-pause-1.gif | Bin 0 -> 48 bytes .../demo/jsAMP-preview/image/sec-left-pause.gif | Bin 0 -> 48 bytes .../jsAMP-preview/image/sec-mid-loaded-dark.png | Bin 0 -> 603 bytes .../jsAMP-preview/image/sec-mid-loaded-light.gif | Bin 0 -> 334 bytes .../jsAMP-preview/image/sec-mid-loaded-light.png | Bin 0 -> 509 bytes .../demo/jsAMP-preview/image/sec-mid-loaded.gif | Bin 0 -> 356 bytes .../demo/jsAMP-preview/image/sec-mid-loaded.png | Bin 0 -> 575 bytes .../demo/jsAMP-preview/image/sec-right-arr0.gif | Bin 0 -> 111 bytes .../demo/jsAMP-preview/image/sec-right-arr0.png | Bin 0 -> 174 bytes .../demo/jsAMP-preview/image/sec-right-arr1.png | Bin 0 -> 194 bytes .../demo/jsAMP-preview/image/shade-left.png | Bin 0 -> 260 bytes .../demo/jsAMP-preview/image/shade-right.png | Bin 0 -> 260 bytes .../demo/jsAMP-preview/image/shuffle-0-light.png | Bin 0 -> 192 bytes .../demo/jsAMP-preview/image/shuffle-0.png | Bin 0 -> 189 bytes .../demo/jsAMP-preview/image/shuffle-1-light.png | Bin 0 -> 287 bytes .../demo/jsAMP-preview/image/shuffle-1.png | Bin 0 -> 229 bytes .../demo/jsAMP-preview/image/skin-0-ui.gif | Bin 0 -> 819 bytes .../demo/jsAMP-preview/image/skin-0-ui.png | Bin 0 -> 901 bytes .../demo/jsAMP-preview/image/skin-0-ui__.gif | Bin 0 -> 649 bytes .../demo/jsAMP-preview/image/skin-1-ui.png | Bin 0 -> 827 bytes .../demo/jsAMP-preview/image/skin-2-ui.png | Bin 0 -> 460 bytes .../demo/jsAMP-preview/image/skin-3-ui.gif | Bin 0 -> 1132 bytes .../demo/jsAMP-preview/image/skin-3-ui.png | Bin 0 -> 987 bytes .../demo/jsAMP-preview/image/skin-4-ui.png | Bin 0 -> 998 bytes .../demo/jsAMP-preview/image/slider-1.png | Bin 0 -> 423 bytes .../demo/jsAMP-preview/image/slider-light.gif | Bin 0 -> 540 bytes .../demo/jsAMP-preview/image/slider-light.png | Bin 0 -> 454 bytes .../demo/jsAMP-preview/image/slider.gif | Bin 0 -> 324 bytes .../demo/jsAMP-preview/image/slider.png | Bin 0 -> 428 bytes .../demo/jsAMP-preview/image/speaker-light.png | Bin 0 -> 223 bytes .../demo/jsAMP-preview/image/speaker.png | Bin 0 -> 214 bytes .../demo/jsAMP-preview/image/ui-highlight-0.gif | Bin 0 -> 239 bytes .../demo/jsAMP-preview/image/ui-highlight-0.png | Bin 0 -> 279 bytes .../demo/jsAMP-preview/image/ui-highlight-1.gif | Bin 0 -> 265 bytes .../demo/jsAMP-preview/image/ui-highlight-1.png | Bin 0 -> 285 bytes .../demo/jsAMP-preview/image/ui-highlight-2.gif | Bin 0 -> 320 bytes .../demo/jsAMP-preview/image/ui-highlight-2.png | Bin 0 -> 284 bytes .../demo/jsAMP-preview/image/volume-light.png | Bin 0 -> 210 bytes .../demo/jsAMP-preview/image/volume.png | Bin 0 -> 213 bytes .../demo/jsAMP-preview/image/whiteout.png | Bin 0 -> 484 bytes .../demo/jsAMP-preview/index.html | 241 ++ .../demo/jsAMP-preview/php notes.txt | 25 + .../demo/jsAMP-preview/script/jsamp-preview.js | 1605 +++++++++++ .../demo/mp3-player-button/basic.html | 48 + .../mp3-player-button/css/mp3-player-button.css | 114 + .../mp3-player-button/image/arrow-right-black.gif | Bin 0 -> 67 bytes .../mp3-player-button/image/arrow-right-black.png | Bin 0 -> 167 bytes .../mp3-player-button/image/arrow-right-white.gif | Bin 0 -> 67 bytes .../mp3-player-button/image/arrow-right-white.png | Bin 0 -> 167 bytes .../demo/mp3-player-button/index.html | 188 ++ .../mp3-player-button/script/mp3-player-button.js | 247 ++ .../demo/mpc/acoustic-drumkit.xml | 33 + .../demo/mpc/audio/AMB_BD_1.mp3 | Bin 0 -> 12416 bytes .../demo/mpc/audio/AMB_FTM2.mp3 | Bin 0 -> 15174 bytes .../demo/mpc/audio/AMB_HHCL.mp3 | Bin 0 -> 5642 bytes .../demo/mpc/audio/AMB_HHOP.mp3 | Bin 0 -> 45139 bytes .../demo/mpc/audio/AMB_HHPD.mp3 | Bin 0 -> 7523 bytes .../demo/mpc/audio/AMB_HTM.mp3 | Bin 0 -> 15986 bytes .../demo/mpc/audio/AMB_LTM2.mp3 | Bin 0 -> 20062 bytes .../demo/mpc/audio/AMB_MTM.mp3 | Bin 0 -> 18808 bytes .../demo/mpc/audio/AMB_RIM1.mp3 | Bin 0 -> 5955 bytes .../demo/mpc/audio/AMB_SN13.mp3 | Bin 0 -> 17554 bytes .../demo/mpc/audio/AMB_SN_5.mp3 | Bin 0 -> 15046 bytes .../demo/mpc/audio/CHINA_1.mp3 | Bin 0 -> 46393 bytes .../demo/mpc/audio/CRASH_1.mp3 | Bin 0 -> 61440 bytes .../demo/mpc/audio/CRASH_5.mp3 | Bin 0 -> 53603 bytes .../demo/mpc/audio/CRASH_6.mp3 | Bin 0 -> 44512 bytes .../demo/mpc/audio/RIDE_1.mp3 | Bin 0 -> 49841 bytes .../demo/mpc/audio/RIDE_3.mp3 | Bin 0 -> 38243 bytes .../demo/mpc/audio/SPLASH_1.mp3 | Bin 0 -> 24764 bytes .../demo/mpc/css/mpc.css | 164 ++ .../demo/mpc/image/progress.png | Bin 0 -> 1925 bytes .../soundmanagerv297a-20101010/demo/mpc/index.html | 72 + .../demo/mpc/script/mpc.js | 144 + .../demo/page-player/basic.html | 103 + .../demo/page-player/css/demo.css | 124 + .../demo/page-player/css/optional-annotations.css | 168 ++ .../demo/page-player/css/optional-themes.css | 206 ++ .../demo/page-player/css/page-player.css | 320 +++ .../demo/page-player/image/divot-bottom.png | Bin 0 -> 202 bytes .../demo/page-player/image/divot.png | Bin 0 -> 233 bytes .../demo/page-player/image/top-highlight.png | Bin 0 -> 165 bytes .../demo/page-player/index.html | 367 +++ .../demo/page-player/script/page-player.js | 936 +++++++ .../demo/play-mp3-links/basic.html | 60 + .../demo/play-mp3-links/css/inlineplayer.css | 212 ++ .../demo/play-mp3-links/image/icon_pause.gif | Bin 0 -> 189 bytes .../demo/play-mp3-links/image/icon_pause.png | Bin 0 -> 222 bytes .../demo/play-mp3-links/image/icon_play.gif | Bin 0 -> 193 bytes .../demo/play-mp3-links/image/icon_play.png | Bin 0 -> 291 bytes .../demo/play-mp3-links/image/test.gif | Bin 0 -> 215 bytes .../demo/play-mp3-links/index.html | 228 ++ .../demo/play-mp3-links/script/inlineplayer.js | 246 ++ .../demo/template/deferred-example.html | 127 + .../demo/template/html5-dtd-test.html | 77 + .../demo/template/index.html | 131 + .../demo/template/template.css | 67 + .../demo/template/xhtml-test.xhtml | 86 + .../doc/download/index.html | 1041 +++++++ .../doc/getstarted/index.html | 549 ++++ .../soundmanagerv297a-20101010/doc/index.html | 1667 ++++++++++++ .../doc/resources/index.html | 239 ++ .../doc/technotes/index.html | 305 +++ .../dymaxion/soundmanagerv297a-20101010/index.html | 513 ++++ .../soundmanagerv297a-20101010/license.txt | 29 + .../script/soundmanager2-jsmin.js | 96 + .../script/soundmanager2-nodebug-jsmin.js | 71 + .../script/soundmanager2-nodebug.js | 2838 ++++++++++++++++++++ .../script/soundmanager2.js | 2838 ++++++++++++++++++++ .../src/SoundManager2.as | 452 ++++ .../src/SoundManager2_AS3.as | 970 +++++++ .../src/SoundManager2_SMSound_AS3.as | 597 ++++ .../soundmanagerv297a-20101010/src/make-flash8.bat | 5 + .../soundmanagerv297a-20101010/src/make-flash8.sh | 2 + .../soundmanagerv297a-20101010/src/make-flash9.bat | 4 + .../soundmanagerv297a-20101010/src/make-flash9.sh | 2 + .../swf/soundmanager2.swf | Bin 0 -> 3090 bytes .../swf/soundmanager2_debug.swf | Bin 0 -> 3582 bytes .../swf/soundmanager2_flash9.swf | Bin 0 -> 9527 bytes .../swf/soundmanager2_flash9_debug.swf | Bin 0 -> 18241 bytes .../swf/soundmanager2_flash_xdomain.zip | Bin 0 -> 35388 bytes .../troubleshoot/debug.css | 120 + .../troubleshoot/debug.js | 173 ++ .../troubleshoot/fpgss-add-location.png | Bin 0 -> 25513 bytes .../troubleshoot/fpgss-added-location.png | Bin 0 -> 24125 bytes .../troubleshoot/index.html | 154 ++ 296 files changed, 29446 insertions(+) create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/README.rdoc create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360 button.psd create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360-button-pause-light.gif create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360-button-pause-light.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360-button-pause.gif create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360-button-pause.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360-button-play-light.gif create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360-button-play-light.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360-button-play.gif create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360-button-play.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360player-visualization.css create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360player.css create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/canvas-visualization-basic.html create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/canvas-visualization.html create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/demo-slider-controls.css create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/demo-slider-controls.js create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/demo.css create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/empty.gif create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/icon_loading_dots.gif create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/icon_loading_spinner.gif create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/icon_loading_spinner_bigger.gif create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/index.html create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/script/360player.js create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/script/berniecode-animator.js create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/script/excanvas.js create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_image/360ui-screenshot1.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_image/360ui-screenshot2.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_image/360ui-screenshot3.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_image/360ui-screenshot4.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_image/8tracks-logo.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_image/discogs.gif create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_image/flash9-dark.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_image/flash9.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_image/getsatisfaction-icon.gif create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_image/hue_thumb.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_image/lastfm.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_image/mixcrate.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_image/muxtape-logo.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_image/new-bw.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_image/new-dark.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_image/new.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_image/opera.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_image/picker_thumb.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_image/slider-1.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_image/slider-bar.gif create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_image/slider.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_image/soundcloud-thecloudplayer-logo.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_image/speaker.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_image/wedge.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/1hz-10khz-sweep.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/440hz.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/880hz.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/background0.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/background1.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/background2.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/bass.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/button-0.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/button-1.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/click-high.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/click-low.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/coins.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/fancy-beer-bottle-pop.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/mak.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/mouseover.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/mouseover2.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/mouseover3.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/select.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/sine, square, sawtooth, rando.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/animation-1/css/animation.css create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/animation-1/image/ball.gif create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/animation-1/index.html create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/animation-1/script/animation.js create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/bg-land.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/bg-sky.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/cursor-10.cur create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/cursor-11.cur create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/cursor-3.cur create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/cursor-4.cur create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/cursor-5.cur create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/cursor-6.cur create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/cursor-7.cur create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/cursor-8.cur create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/cursor-9.cur create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/cursor-shadow.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/dot.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/index.html create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2b/audio/bonk.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2b/audio/fingerplop.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2b/audio/fingerplop2.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2b/css/animation.css create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2b/image/ball.gif create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2b/image/point.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2b/index.html create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2b/script/animation.js create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/animation/audio/bonk.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/animation/audio/fingerplop.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/animation/audio/fingerplop2.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/animation/index.html create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/api/index.html create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/christmaslights-home.js create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/christmaslights.css create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/christmaslights.js create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bg-strip-dark.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/blank.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-32x32-bottom.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-32x32-left.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-32x32-right.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-32x32-top.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-50x50-bottom.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-50x50-fragments.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-50x50-left.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-50x50-right.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-50x50-top.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-50x50.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-64x64-bottom.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-64x64-left.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-64x64-right.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-64x64-top.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-72x72-bottom.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-72x72-left.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-72x72-right.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-72x72-top.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-96x96-bottom.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-96x96-left.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-96x96-right.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-96x96-top.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/index.html create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/sound/glass0.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/sound/glass1.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/sound/glass2.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/sound/glass3.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/sound/glass4.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/sound/glass5.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/yahoo-dom-event-animation-260.js create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/debug.css create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/flashblock/basic.html create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/flashblock/flashblock.css create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/flashblock/index.html create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/flashblock/method1/flashblock.css create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/flashblock/method1/flashblock.js create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/flashblock/method1/index.html create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/index.css create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/index.html create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/index.js create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/audio/going_outside.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/audio/office_lobby.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/audio/rain.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/audio/walking.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/backgrounds/bg1.jpg create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/backgrounds/bg2.jpg create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/backgrounds/bg3.jpg create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/css/player-light.css create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/css/player.css create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/btn-next-1.gif create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/btn-next-1.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/btn-next.gif create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/btn-next.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/btn-prev-1.gif create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/btn-prev-1.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/btn-prev.gif create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/btn-prev.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/loop-light.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/loop.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/notreallyajaxandyouknowit-dark.gif create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/notreallyajaxandyouknowit-light.gif create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/sec-left-arr0.gif create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/sec-left-arr0.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/sec-left-arr1.gif create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/sec-left-arr1.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/sec-left-arr2.gif create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/sec-left-pause-1.gif create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/sec-left-pause.gif create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/sec-mid-loaded-dark.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/sec-mid-loaded-light.gif create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/sec-mid-loaded-light.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/sec-mid-loaded.gif create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/sec-mid-loaded.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/sec-right-arr0.gif create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/sec-right-arr0.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/sec-right-arr1.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/shade-left.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/shade-right.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/shuffle-0-light.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/shuffle-0.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/shuffle-1-light.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/shuffle-1.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/skin-0-ui.gif create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/skin-0-ui.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/skin-0-ui__.gif create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/skin-1-ui.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/skin-2-ui.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/skin-3-ui.gif create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/skin-3-ui.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/skin-4-ui.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/slider-1.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/slider-light.gif create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/slider-light.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/slider.gif create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/slider.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/speaker-light.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/speaker.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/ui-highlight-0.gif create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/ui-highlight-0.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/ui-highlight-1.gif create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/ui-highlight-1.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/ui-highlight-2.gif create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/ui-highlight-2.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/volume-light.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/volume.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/image/whiteout.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/index.html create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/php notes.txt create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/jsAMP-preview/script/jsamp-preview.js create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/mp3-player-button/basic.html create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/mp3-player-button/css/mp3-player-button.css create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/mp3-player-button/image/arrow-right-black.gif create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/mp3-player-button/image/arrow-right-black.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/mp3-player-button/image/arrow-right-white.gif create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/mp3-player-button/image/arrow-right-white.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/mp3-player-button/index.html create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/mp3-player-button/script/mp3-player-button.js create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/mpc/acoustic-drumkit.xml create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/mpc/audio/AMB_BD_1.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/mpc/audio/AMB_FTM2.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/mpc/audio/AMB_HHCL.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/mpc/audio/AMB_HHOP.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/mpc/audio/AMB_HHPD.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/mpc/audio/AMB_HTM.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/mpc/audio/AMB_LTM2.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/mpc/audio/AMB_MTM.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/mpc/audio/AMB_RIM1.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/mpc/audio/AMB_SN13.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/mpc/audio/AMB_SN_5.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/mpc/audio/CHINA_1.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/mpc/audio/CRASH_1.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/mpc/audio/CRASH_5.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/mpc/audio/CRASH_6.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/mpc/audio/RIDE_1.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/mpc/audio/RIDE_3.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/mpc/audio/SPLASH_1.mp3 create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/mpc/css/mpc.css create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/mpc/image/progress.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/mpc/index.html create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/mpc/script/mpc.js create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/page-player/basic.html create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/page-player/css/demo.css create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/page-player/css/optional-annotations.css create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/page-player/css/optional-themes.css create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/page-player/css/page-player.css create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/page-player/image/divot-bottom.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/page-player/image/divot.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/page-player/image/top-highlight.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/page-player/index.html create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/page-player/script/page-player.js create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/play-mp3-links/basic.html create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/play-mp3-links/css/inlineplayer.css create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/play-mp3-links/image/icon_pause.gif create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/play-mp3-links/image/icon_pause.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/play-mp3-links/image/icon_play.gif create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/play-mp3-links/image/icon_play.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/play-mp3-links/image/test.gif create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/play-mp3-links/index.html create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/play-mp3-links/script/inlineplayer.js create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/template/deferred-example.html create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/template/html5-dtd-test.html create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/template/index.html create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/template/template.css create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/demo/template/xhtml-test.xhtml create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/doc/download/index.html create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/doc/getstarted/index.html create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/doc/index.html create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/doc/resources/index.html create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/doc/technotes/index.html create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/index.html create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/license.txt create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/script/soundmanager2-jsmin.js create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/script/soundmanager2-nodebug-jsmin.js create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/script/soundmanager2-nodebug.js create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/script/soundmanager2.js create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/src/SoundManager2.as create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/src/SoundManager2_AS3.as create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/src/SoundManager2_SMSound_AS3.as create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/src/make-flash8.bat create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/src/make-flash8.sh create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/src/make-flash9.bat create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/src/make-flash9.sh create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/swf/soundmanager2.swf create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/swf/soundmanager2_debug.swf create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/swf/soundmanager2_flash9.swf create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/swf/soundmanager2_flash9_debug.swf create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/swf/soundmanager2_flash_xdomain.zip create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/troubleshoot/debug.css create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/troubleshoot/debug.js create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/troubleshoot/fpgss-add-location.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/troubleshoot/fpgss-added-location.png create mode 100755 docs/dymaxion/soundmanagerv297a-20101010/troubleshoot/index.html (limited to 'docs/dymaxion/soundmanagerv297a-20101010') diff --git a/docs/dymaxion/soundmanagerv297a-20101010/README.rdoc b/docs/dymaxion/soundmanagerv297a-20101010/README.rdoc new file mode 100755 index 0000000..b121244 --- /dev/null +++ b/docs/dymaxion/soundmanagerv297a-20101010/README.rdoc @@ -0,0 +1,98 @@ +== 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 (Beta-ish) + + * 100% Flash-free MP3 + MP4/AAC where supported, compatible with Apple iPad 3.2, iPhone/iOS 4 + * Fallback to Flash for MP3/MP4 support, as needed + * SM2 API is unchanged, transparent; HTML5/flash switching handled internally + * HTML5 API support approximates Flash 8 API features, minus ID3, plus buffering + * Some other formats (WAV/OGG) supported via HTML5, depending on browser + * See soundManager.useHTML5Audio 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: + + * Muxtape + * SoundCloud / The Cloud Player + * 8tracks + * Last.fm + * Opera (media player component) + * Discogs + * Mixcrate + +== Project home, documentation, live demos etc.: + +http://www.schillmania.com/projects/soundmanager2/ + + +== Merged fork ( kjvarga: http://github.com/kjvarga/SoundManager2/ ) + +This SM2 fork contains the SoundManager2 implementation that is used on http://www.kazaa.com. + +We added RTMP support to SM2 which is now part of the SM2 (experimental) branch as of V2.96a.20100606. + +Downloads: http://www.schillmania.com/projects/soundmanager2/doc/download/ + +For more background on the addition of RTMP check out http://getsatisfaction.com/schillmania/topics/soundmanager_doesnt_support_rtmp + +Our old branch of development has been moved to http://github.com/kjvarga/SoundManager2/tree/pre_merge. + +== Changes + +In addition to the documented SM2 options, we have added the following. + +New options to SM2: + +* ondebuglog callback called with every debugging message. Useful if you need to programatically have access to the debug logs. We use this in our automated reporting of stream failures for QA. + +New options to createSound: + +* bufferTimes optional array of buffer times for double/multiple-buffering. Just specify an array of incrementing buffer sizes (in seconds) e.g. [0.5, 2, 8] for a half-second, then 2 second, then 8 second buffer. Buffers increment when full and reset to the smallest buffer when empty, or when starting to play an unbuffered portion of the stream. +* onstats callback called with statistics including how long it took to connect to the server, and how long it took to play (useful for QA). + +Our FMS server has some peculiarities that we have to deal with: +* bytesLoaded is always 0 for a streaming sound +* NetStream.Play.Stop is sent when it shouldn't +* We cannot get the stream length using a typical getStreamLength call +* We cannot get bandwidth information + +== Debugging + +1. Set soundManager.debugFlash = true; +2. Use a debug version of the SWF e.g. soundmanager2_flash9_debug.swf +3. Open the Flash IDE. Open the SM2 source code files. Start a remote debugging session. +4. Refresh the application in the browser (make sure caching is off). +5. The SWF should connect to Flash and allow you to step through the source. + +If it doesn't: +1. Make sure that the Flash version you have installed supports debugging +2. Make sure that the Flash debugger application is using the same version of Flash. + +== SM2 + +Project home, documentation, live demos etc.: +http://www.schillmania.com/projects/soundmanager2/ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360 button.psd b/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360 button.psd new file mode 100755 index 0000000..afd0498 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360 button.psd differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360-button-pause-light.gif b/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360-button-pause-light.gif new file mode 100755 index 0000000..cf9eab3 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360-button-pause-light.gif differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360-button-pause-light.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360-button-pause-light.png new file mode 100755 index 0000000..8f66539 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360-button-pause-light.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360-button-pause.gif b/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360-button-pause.gif new file mode 100755 index 0000000..6e589ea Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360-button-pause.gif differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360-button-pause.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360-button-pause.png new file mode 100755 index 0000000..dc84def Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360-button-pause.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360-button-play-light.gif b/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360-button-play-light.gif new file mode 100755 index 0000000..eb36483 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360-button-play-light.gif differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360-button-play-light.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360-button-play-light.png new file mode 100755 index 0000000..a2f6557 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360-button-play-light.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360-button-play.gif b/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360-button-play.gif new file mode 100755 index 0000000..b97cd7f Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360-button-play.gif differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360-button-play.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360-button-play.png new file mode 100755 index 0000000..ce2d9a3 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360-button-play.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360player-visualization.css b/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360player-visualization.css new file mode 100755 index 0000000..96cc582 --- /dev/null +++ b/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360player-visualization.css @@ -0,0 +1,88 @@ +/* larger canvas, spectrum + EQ visualization and other items */ + +.ui360, +.sm2-360ui { + /* size of the container for the circle, etc. */ + width:256px; + height:256px; +} + +.ui360 { + 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 */ +} + +.ui360 a { + font:14px "helvetica neue",helvetica,monaco,lucida,terminal,monospace; + white-space:nowrap; + line-height:256px; +} + +.sm2-360ui { + margin-left:-256px; +} + +.ui360 .sm2-timing { + line-height:256px; +} + +.ui360 .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, +.sm2-inline-list .sm2-360ui { + margin-left:0px; +} + +.sm2-inline-list .ui360 { + margin:8px 13px 7px 0px; + padding-left:0px; + background-position:50% 50%; /* initial play button position */ +} + +.sm2-inline-list .sm2-360ui { + border:1px solid #eee; +} + +.sm2-inline-list .ui360 a { + position:absolute; + left:0px; + bottom:0px; + margin-left:1px; + width:100%; /* 2px padding in box */ + height:auto; + font-size:x-small; + padding:2px 0px; + color:#999; + line-height:15px; + text-align:center; + display:inline; + -moz-border-radius:0px; + -khtml-border-radius:0px; + border-radius:0px; +} + +.sm2-inline-list .ui360 a:focus, +.sm2-inline-list .ui360 a:active { + background-color:transparent; +} + +/* Use a bigger loading image for this layout */ + +.ui360 .sm2-360ui.sm2_buffering .sm2-360btn, +.ui360 .sm2-360ui.sm2_buffering .sm2-360btn:hover { + background:transparent url(icon_loading_spinner_bigger.gif) no-repeat 50% 50%; + opacity:0.5; + visibility:visible; +} \ No newline at end of file diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360player.css b/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360player.css new file mode 100755 index 0000000..a961dc5 --- /dev/null +++ b/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/360player.css @@ -0,0 +1,258 @@ +/* General warning: Beta-ish. Code could be a bit cleaner. */ + +.ui360, +.ui360 * { + position:relative; +} + +.ui360, +.sm2-360ui { + /* size of the container for the circle, etc. */ + width:50px; + height:50px; +} + +.ui360 { + position:relative; + /* a little extra spacing */ + padding-top:1px; + padding-bottom:1px; + margin-bottom:-18px; /* approximate "line height" we want */ + padding-left:42px; /* 50px, with a few off - margin used for visualization UI */ +} + +.ui360 a { + line-height:50px; +} + +.sm2-360ui { + margin-left:-50px; +} + +.ui360 { + width:auto; +} + +.ui360, +.ui360 * { + vertical-align:middle; +} + +.sm2-360ui { + position:relative; + display:inline-block; /* firefox 3 et al */ + float:left; /* firefox 2 needs this, inline-block would work with fx3 and others */ + *float:left; /* IE 6+7 */ + *display:inline; + *clear:left; +} + +.sm2-360ui.sm2_playing, +.sm2-360ui.sm2_paused { + /* bump on top when active */ + z-index:10; +} + +.ui360 a.sm2_link { /* this class added to playable links by SM2 */ + position:relative; +} + +.ui360 a { + color:#000; + text-decoration:none; +} + +.ui360 a, +.ui360 a:hover, +.ui360 a:focus { + padding:2px; + margin-left:-2px; + margin-top:-2px; +} + +.ui360 a:hover, +.ui360 a:focus { + background:#eee; + -moz-border-radius:3px; + -webkit-border-radius:3px; + -khtml-border-radius:3px; + 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; + z-index:2; + display:none; +} + +.ui360 .sm2-360btn { + position:absolute; + top:50%; + left:50%; + width:22px; + height:22px; + margin-left:-11px; + margin-top:-11px; + cursor:pointer; + z-index:3; +} + +.ui360 .sm2-360btn-default { +} + +.ui360 .sm2-360data { + display:inline-block; + font-family:helvetica; +} + +.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 { + background:transparent url(360-button-play.png) no-repeat 50% 50%; + _background:transparent url(360-button-play.gif) no-repeat 50% 50%; /* IE 6-only: special crap GIF */ + cursor:pointer; +} + +.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:6px 50%; +} + +.ui360 .sm2-360ui.sm2_paused .sm2-360btn { + background:transparent url(360-button-play.png) no-repeat 50% 50%; + _background:transparent url(360-button-play.gif) no-repeat 50% 50%; + 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, +x.ui360 .sm2-360btn-playing, +.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 { + margin-bottom:0px; +} + +.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; +} \ No newline at end of file diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/canvas-visualization-basic.html b/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/canvas-visualization-basic.html new file mode 100755 index 0000000..789846b --- /dev/null +++ b/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/canvas-visualization-basic.html @@ -0,0 +1,125 @@ + + + +360° MP3 player UI demo (SoundManager 2): Javascript + Canvas Visualization, basic example + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +

360° Player Demo - Visualization Example, Basic Template

+ +

Canvas-based UI with visualization options. Note: No EQ/spectrum support for IE (too slow.) Data not available in HTML5.

+ +
+ +
+ +
+ + + +

Inline list

+ +
+ + + + + + +
+ +

Block list

+ +
+ + +
+ +
+ +

+ SoundManager 2 project page (not an MP3 link) +

+ + + + + diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/canvas-visualization.html b/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/canvas-visualization.html new file mode 100755 index 0000000..cb8071f --- /dev/null +++ b/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/canvas-visualization.html @@ -0,0 +1,328 @@ + + + +360° MP3 player UI demo (SoundManager 2): Javascript + Canvas Visualization + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +

SoundManager 2 / 360° Player Demo: JS + Canvas Visualization

+ +

Canvas-based UI with visualization options. Note: Spectrum/EQ visualizations disabled for IE (too slow.) Data is not currently available under HTML5.

+

You can also show FPS or customize the UI, or see the hi-fi version. Check the basic template for a minimal code example; also see the default 360° UI.

+ + + + + + + +
+ +
+ +

Inline list

+ + + +

"I Tried" and "People Asking" courtesy of SonReal, from the "Lightyear" Mixtape.

+ +

Block list

+ +
+ + +
+ + +
+ +

Variant: Annotations/meta-data

+ + + + +
+ +

+ SoundManager 2 project page (not an MP3 link) +

+ + + +
+ + + diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/demo-slider-controls.css b/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/demo-slider-controls.css new file mode 100755 index 0000000..27281c0 --- /dev/null +++ b/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/demo-slider-controls.css @@ -0,0 +1,179 @@ +#cp-container { position:relative;float:left;display:inline; margin-left:1em;padding: 6px; background-color: #f6f6f6; border:1px solid #eee; width: 320px; height:180px;z-index:2; } + +.yui-picker-controls li, +.yui-picker-controls input { + font-size:1em; + font-family:"helvetica neue",helvetica,arial,verdana; +} + +#controls { + position:relative; + margin-top:1.5em; + font-size:0.85em; +} + +#options { + float:left; + display:inline; + margin-bottom:0.5em; + margin-top:-1.2em; +} + +#controls .checkbox { + float:left; + display:inline; + width:21.2em; + margin-right:2.5em; +} + +#controls .checkbox div { + /* tab */ + width:auto; + padding:0.4em; + border:1px solid #ddd; + border-bottom:none; + background:#eee; +} + +#controls .checkbox div, +#controls .checkbox input { + font-family:arial,tahoma,verdana,"sans serif"; + font-size:1em; + vertical-align:middle; +} + +#controls dl { + width:21em; +} + +#controls dl.col { + position:relative; + float:left; + display:inline; + margin:0px; + margin-right:1em; + padding:0.75em; +/* + height:12.4em; +*/ + height:auto; + border:1px solid #ddd; + background:#f6f6f6; +} + +#controls .disabled { + color:#ccc; +} + +#controls .disabled dt, +#controls .disabled dd { + color:#999; + opacity:0.5; +} + +#controls dl dd p { + margin:0px; + padding:0px; +} + +#controls dt, +#controls dd { + margin:0px; + padding:0px; +} + +#controls dt { + border-bottom:none; +} + +#controls dt { + float:left; + display:inline; + background:transparent; + padding-right:0.7em; + margin-right:0.7em; + border-right:1px solid #ccc; + font-size:1.1em; + color:#333; + font-family:"helvetica neue",helvetica,verdana,arial,"sans serif"; +} + +#controls dd { + margin:0px; + padding:0px; + font-size:0.9em; + vertical-align:middle; + color:#666; +} + +#controls .title { + float:left; + display:inline; + margin-right:0.6em; + color:#333; +} + +/* those slider bits you might be wondering about */ + +#controls .control { + position:relative; + border-left:0px; + width:214px; + height:20px; +} + +#controls .control .bar { + position:absolute; + left:0px; + top:0px; + width:214px; + height:20px; + background:transparent url(../_image/slider-bar.gif) no-repeat 0px 9px; + cursor:pointer; + cursor:hand; +} + +#controls .control .slider { + position:absolute; + left:0px; + top:0px; + width:20px; + height:20px; + background:transparent url(../_image/slider.png) no-repeat 0px 0px; + *background:none; + filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,sizingMethod=crop,src='../_image/slider.png'); + cursor:pointer; + cursor:hand; +} + +#controls .control .slider:hover { + background:transparent url(../_image/slider-1.png) no-repeat 0px 0px; + *background:none; +} + +#controls .control .slider.hover { + filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,sizingMethod=crop,src='../_image/slider-1.png'); +} + +#controls .disabled .control .slider { + background:transparent url(../_image/slider-disabled.png) no-repeat 0px 0px; + *background:none; + filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,sizingMethod=crop,src='../_image/slider-disabled.png'); +} + +#controls .disabled .control .slider:hover { + background:transparent url(../_image/slider-disabled-1.png) no-repeat 0px 0px; + *background:none; +} + +#controls .disabled .control .slider.hover { + filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,sizingMethod=crop,src='../_image/slider-disabled-1.png'); +} + +#controls input[type=text] { + width:5em; +} + +#options div { + margin-bottom:0.25em; +} \ No newline at end of file diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/demo-slider-controls.js b/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/demo-slider-controls.js new file mode 100755 index 0000000..16a02dc --- /dev/null +++ b/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/demo-slider-controls.js @@ -0,0 +1,711 @@ +/* + Ancient fireworks slider control code (2005) + http://schillmania.com/projects/fireworks/ + -------------------------------------------- + Not required for your use! +*/ + +function Animator2() { + var self = this; + this.tweens = []; + this.tweens['default'] = [1,2,3,4,5,6,7,8,9,10,9,8,7,6,5,4,3,2,1]; + this.tweens['blast'] = [12,12,11,10,10,9,8,7,6,5,4,3,2,1]; + this.tweens['fade'] = [10,10,10,10,10,10,10,10,10,10]; + this.queue = []; + this.queue.IDs = []; + this.active = false; + this.timer = null; + + this.createTween = function(start,end,type) { + // return array of tween coordinate data (start->end) + type = type||'default'; + var tween = [start]; + var tmp = start; + var diff = end-start; + var x = self.tweens[type].length; + for (var i=0; i= 0.4 && pos <= 0.6) { + pos = 0.5; + } + pos = parseInt(pos*100); + // writeDebug('getPanX('+x+'): '+pos+'%'); + return pos; + } + + this.isEmpty = function(o) { + // needs further hacking + return (typeof(o)=='undefined'||(o==null&&o!=0)||(o==''&&o!=0)||o=='null'); + } + + this.init = function() { +// self.oFW = document.getElementById('fw'); +// self.oFP = document.getElementById('fp'); +// if (typeof(enableDebugMode)!='undefined' && (self.DEBUG||window.location.toString().toLowerCase().indexOf('debug')>=0)) enableDebugMode(); + self.getWindowCoords(); + self.animator = new Animator2(); + } + + this.destructor = function() { +/* + for (var i=self.fireworks.length; i--;) { + self.fireworks[i] = null; + } + self.fireworks = null; + if (soundManager) { + soundManager.destructor(); + soundManager = null; + } +*/ + } + + if (this.isSafari || this.isOpera) this.getWindowCoords = this.getWindowCoordsAlt; + +} + + +function Controller(o) { + var self = this; + this.o = o; + this.controls = []; + this.cb = []; + this.options = []; + this.functionExample = document.getElementById('function-example'); + this.fbIE = null; + + this.randomize = function() { + for (var i=1; i,\n\ + playRingColor: '"+threeSixtyPlayer.config.playRingColor+"',\n\ + backgroundRingColor: '"+threeSixtyPlayer.config.backgroundRingColor+"',\n\ + circleDiameter: "+threeSixtyPlayer.config.circleDiameter+",\n\ + circleRadius: "+threeSixtyPlayer.config.circleRadius+",\n\ + imageRoot: '"+threeSixtyPlayer.config.imageRoot+"',\n\ + animDuration: "+threeSixtyPlayer.config.animDuration+",\n\ + animTransition: Animator.tx.bouncy,\n\ + showHMSTime: "+threeSixtyPlayer.config.showHMSTime+",\n\ +\n\ + useWaveformData: "+threeSixtyPlayer.config.useWaveformData+",\n\ + waveformDataColor: '"+threeSixtyPlayer.config.waveformDataColor+"',\n\ + waveformDataDownsample: "+threeSixtyPlayer.config.waveformDataDownsample+",\n\ + waveformDataOutside: "+threeSixtyPlayer.config.waveformDataOutside+",\n\ + waveformDataConstrain: false,\n\ + waveformDataLineRatio: "+threeSixtyPlayer.config.waveformDataLineRatio+",\n\ +\n\ + useEQData: "+threeSixtyPlayer.config.useEQData+",\n\ + eqDataColor: '"+threeSixtyPlayer.config.eqDataColor+"',\n\ + eqDataDownsample: "+threeSixtyPlayer.config.eqDataDownsample+",\n\ + eqDataOutside: "+threeSixtyPlayer.config.eqDataOutside+",\n\ + eqDataLineRatio: "+threeSixtyPlayer.config.eqDataLineRatio+",\n\ +\n\ + usePeakData: "+threeSixtyPlayer.config.usePeakData+",\n\ + peakDataColor: '"+threeSixtyPlayer.config.peakDataColor+"',\n\ + peakDataOutside: "+threeSixtyPlayer.config.peakDataOutside+",\n\ + peakDataLineRatio: "+threeSixtyPlayer.config.peakDataLineRatio+",\n\ +\n\ + useAmplifier: "+threeSixtyPlayer.config.useAmplifier+"\n\ +\n\ +}"; +document.getElementById('config-code').style.display = 'block'; // weird Fx fix + } + + this.createCustomFirework = function() { + } + + this.destructor = function() { + for (var i=self.controls.length; i--;) { + self.controls[i].destructor(); + } + for (i=self.cb.length; i--;) { + self.cb.onclick = null; + self.cb[i] = null; + } + for (i=self.options.length; i--;) { + self.options[i] = null; + } + if (navigator.userAgent.match(/msie/i)) { + self.fbIE.onmouseover = null; + self.fbIE.onmouseout = null; + self.fbIE = null; + } + self.cb = null; + self.options = null; + self.controls = null; + self.functionExample = null; + self.o = null; + } + + var items = parseInt(this.o.length/3); + for (var i=0; iself.xMax) { + x = self.xMax; + } else if (x=self.tween.length-1) { + self.active = false; + self.frame = 0; + if (self._oncomplete) self._oncomplete(); +// self.doUpdate(); + return false; + } + self.doUpdate(); + return true; + } + + this.doUpdate = function(t) { + // if (!self.timer) self.timer = setTimeout(self.update,t||20); + self.update(); + } + + this.update = function() { + self.timer = null; + self.value = 1+parseInt(self.x/self.xMax*(self.scale-1)); + if (self.value<1) self.value = 1; + // if (self.oV.innerHTML != self.value) self.oV.innerHTML = self.value; + // self.oV.innerHTML = self.value; + } + + this.setValue = function(x) { + self.slide(self.x,Math.min(self.xMax,x)); + } + + this.randomize = function() { + self.slide(self.x,parseInt(Math.random()*self.xMax)); + } + + this.destructor = function() { + self.o.onmouseover = null; + self.o.onmouseout = null; + self.o.onmousedown = null; + self.o = null; + self.oV = null; + self.oB.onclick = null; + self.oB = null; + } + + if (soundManager.isIE) { + // IE is lame, no :hover + this.o.onmouseover = this.over; + this.o.onmouseout = this.out; + } + + this.o.onmousedown = this.down; + this.oB.onclick = this.barClick; + self.update(); + +} + +var gOID = 0; + +function demoInit() { + controller = new Controller(document.getElementById('controls').getElementsByTagName('dd')); +} + +function demoDestuctor() { + controller.destructor(); + controller = null; +} + +var controller = null; + +var mc = new MainController(); +// create null objects if APIs not present + +function createCP(oInput,oHandler) { + var Event = YAHOO.util.Event; + + cpHandler = oHandler; + if (picker != null) { + // picker.showcontrols(true); + var c = oInput.value.substr(1); + picker.setValue(hex2decArray([c.substr(0,2),c.substr(2,2),c.substr(4,2)]),true); // be silent + return false; + } + + Event.onDOMReady(function() { + picker = new YAHOO.widget.ColorPicker("cp-container", { + showhsvcontrols: true, + showhexcontrols: true, + images: { + PICKER_THUMB: "../_image/picker_thumb.png", + HUE_THUMB: "../_image/hue_thumb.png" + } + }); + +// picker.showcontrols(false); + //a listener for logging RGB color changes; + //this will only be visible if logger is enabled: + var onRgbChange = function(o) { + /*o is an object + { newValue: (array of R, G, B values), + prevValue: (array of R, G, B values), + type: "rgbChange" + } + */ + cpHandler(o.newValue); + controller.updateExampleCode(); + } + + //subscribe to the rgbChange event; + picker.on("rgbChange", onRgbChange); + + //use setValue to reset the value to white: + Event.on("reset", "click", function(e) { + picker.setValue([255, 255, 255], false); //false here means that rgbChange + //wil fire; true would silence it + }); + + //use the "get" method to get the current value + //of one of the Color Picker's properties; in + //this case, we'll get the hex value and write it + //to the log: + Event.on("gethex", "click", function(e) { + console.log("Current hex value: " + picker.get("hex")); + }); + + }); +} + +var picker = null; + +cpHandler = function() { +} + + + // hex -> dec / dec -> hex + // http://www.southwest.com.au/~jfuller/binary/converter.htm + + function dec2hex(cval) { + if (cval > 255) cval = 255; + var hexascii = "0123456789ABCDEF"; + var cval0 = Math.floor(cval/16); + var cval1 = cval-(cval0*16); + var c1 = hexascii.charAt(cval0); + var c2 = hexascii.charAt(cval1); + return (c1+c2); + } + + function hex2dec(cval) { + cval = cval.toUpperCase(); + var tval = 0; + var hexascii = "0123456789ABCDEF"; + var mychar, ch; + for (var c=0; c + + +360° MP3 player UI demo (SoundManager 2) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +

SoundManager 2 / 360° Player: JS + Canvas UI

+ +

Canvas-based UI. Load progress, seek, play/pause etc. Also see 360° UI visualization demo.

+ +
+ +
+ +
+ + + + +
+ +

Alternate style: inline

+ + + +
+ +
+ +
+ + +

How This Works

+ +

The script looks for a container element matching div.ui360, and then the first link inside of it.

+ +
+ +
<div class="ui360">
+ <a href="/path/to/an.mp3">
+</div>
+ +
+ +

When the link is clicked, the script adds a UI template to the block, prepending it in front of the MP3 link:

+ +
<div class="ui360">
+ <-- dynamically-inserted block -->
+ <div class="ui">
+  <canvas class="sm2-canvas"></canvas>
+  <img class="sm2-360btn" /> 
+  <div class="sm2-timing"></div>
+  <div class="sm2-cover"></div>
+ </div>
+ <-- /UI -->
+ <a href="/path/to/an.mp3">
+</div>
+ +

Customizing the UI

+ +

The player's default 50x50-pixel canvas is defined both within JavaScript and CSS. For an example with different values, see this larger version.

+ +
threeSixtyPlayer.config = {
+  playNext: false, // stop after one sound, or play through list until end
+  autoPlay: false, // start playing the first sound right away
+  loadRingColor: '#ccc', // amount of sound which has loaded
+  playRingColor: '#000', // amount of sound which has played
+  backgroundRingColor: '#eee', // "default" color shown underneath everything else
+  imageRoot: '', // path to prepend for empty.gif used for play/pause button
+  animDuration: 500,
+  animTransition: Animator.tx.bouncy // http://www.berniecode.com/writing/animator.html
+}
+ +

The CSS for the canvas UI block is a bit ugly, but JavaScript reads the width of the .sm2-360ui element in the DOM as set by CSS and uses that to later draw and update the canvas element while playing.

+ +
.ui360,
+.sm2-360ui {
+  /* size of the container for the circle, etc. */
+  width:50px;
+  height:50px;
+}
+
+ +

Third-party Components

+ +

This demo includes use of Bernie's Better Animation Class (Apache licensed) for some animation effects.

+

Also, some loader/spinner icons from ajaxload.info are used for showing loading/buffering states.

+ +
+ +

+ SoundManager 2 project page (not an MP3 link) +

+ + +
+ + + diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/script/360player.js b/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/script/360player.js new file mode 100755 index 0000000..419559c --- /dev/null +++ b/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/script/360player.js @@ -0,0 +1,1270 @@ +/* + + SoundManager 2 Demo: 360-degree / "donut player" + ------------------------------------------------ + http://schillmania.com/projects/soundmanager2/ + + An inline player with a circular UI. + Based on the original SM2 inline player. + Inspired by Apple's preview feature in the + iTunes music store (iPhone), among others. + + Requires SoundManager 2 Javascript API. + Also uses Bernie's Better Animation Class (BSD): + http://www.berniecode.com/writing/animator.html + +*/ + +function ThreeSixtyPlayer() { + var self = this; + var pl = this; + var sm = soundManager; // soundManager instance + var uA = navigator.userAgent; + var isIE = (uA.match(/msie/i)); + var isOpera = (uA.match(/opera/i)); + var isSafari = (uA.match(/safari/i)); + var isChrome = (uA.match(/chrome/i)); + var isFirefox = (uA.match(/firefox/i)); + var isTouchDevice = (uA.match(/ipad|iphone/i)); + this.excludeClass = 'threesixty-exclude'; // CSS class for ignoring MP3 links + + this.links = []; + this.sounds = []; + this.soundsByURL = []; + this.indexByURL = []; + this.lastSound = null; + this.soundCount = 0; + this.oUITemplate = null; + this.oUIImageMap = null; + this.vuMeter = null; + + this.config = { + + playNext: false, // stop after one sound, or play through list until end + autoPlay: false, // start playing the first sound right away + loadRingColor: '#ccc', // how much has loaded + playRingColor: '#000', // how much has played + backgroundRingColor: '#eee', // color shown underneath load + play ("not yet loaded" color) + + // optional segment/annotation (metadata) stuff.. + segmentRingColor: 'rgba(255,255,255,0.33)', // metadata/annotation (segment) colors + segmentRingColorAlt: 'rgba(0,0,0,0.1)', + loadRingColorMetadata: '#ddd', // "annotations" load color + playRingColorMetadata: 'rgba(96,160,224,0.99)', // how much has played when metadata is present + playRingColorMetadata: 'rgba(128,192,256,0.9)', // how much has played when metadata is present + + circleDiameter: null, // set dynamically according to values from CSS + circleRadius: null, + imageRoot: '', // image path to prepend for transparent .GIF - eg. /images/ + animDuration: 500, + animTransition: Animator.tx.bouncy, // http://www.berniecode.com/writing/animator.html + showHMSTime: false, // hours:minutes:seconds vs. seconds-only + scaleFont: false, // also set the font size (if possible) while animating the circle + + // optional: spectrum or EQ graph in canvas (not supported in IE, too slow via ExCanvas) + useWaveformData: false, + waveformDataColor: '#0099ff', + waveformDataDownsample: 3, // use only one in X (of a set of 256 values) - 1 means all 256 + waveformDataOutside: false, + waveformDataConstrain: false, // if true, +ve values only - keep within inside circle + waveformDataLineRatio: 0.64, + + // "spectrum frequency" option + useEQData: false, + eqDataColor: '#339933', + eqDataDownsample: 4, // use only one in X (of 256 values) + eqDataOutside: true, + eqDataLineRatio: 0.54, + + // enable "amplifier" (canvas pulses like a speaker) effect + usePeakData: true, + peakDataColor: '#ff33ff', + peakDataOutside: true, + peakDataLineRatio: 0.5, + + useAmplifier: true, // "pulse" like a speaker + + fontSizeMax: null, // set according to CSS + + useFavIcon: false // Experimental (also requires usePeakData: true).. Try to draw a "VU Meter" in the favicon area, if browser supports it (Firefox + Opera as of 2009) + + } + + this.css = { + // CSS class names appended to link during various states + sDefault: 'sm2_link', // default state + sBuffering: 'sm2_buffering', + sPlaying: 'sm2_playing', + sPaused: 'sm2_paused' + } + + this.addEventHandler = function(o,evtName,evtHandler) { + typeof(attachEvent)=='undefined'?o.addEventListener(evtName,evtHandler,false):o.attachEvent('on'+evtName,evtHandler); + } + + this.removeEventHandler = function(o,evtName,evtHandler) { + typeof(attachEvent)=='undefined'?o.removeEventListener(evtName,evtHandler,false):o.detachEvent('on'+evtName,evtHandler); + } + + this.hasClass = function(o,cStr) { + return (typeof(o.className)!='undefined'?o.className.match(new RegExp('(\\s|^)'+cStr+'(\\s|$)')):false); + } + + this.addClass = function(o,cStr) { + if (!o || !cStr || self.hasClass(o,cStr)) return false; + o.className = (o.className?o.className+' ':'')+cStr; + } + + this.removeClass = function(o,cStr) { + if (!o || !cStr || !self.hasClass(o,cStr)) return false; + o.className = o.className.replace(new RegExp('( '+cStr+')|('+cStr+')','g'),''); + } + + this.getElementsByClassName = function(className,tagNames,oParent) { + var doc = (oParent||document); + var matches = []; + var i,j; + var nodes = []; + if (typeof tagNames != 'undefined' && typeof tagNames != 'string') { + for (i=tagNames.length; i--;) { + if (!nodes || !nodes[tagNames[i]]) { + nodes[tagNames[i]] = doc.getElementsByTagName(tagNames[i]); + } + } + } else if (tagNames) { + nodes = doc.getElementsByTagName(tagNames); + } else { + nodes = doc.all||doc.getElementsByTagName('*'); + } + if (typeof(tagNames)!='string') { + for (i=tagNames.length; i--;) { + for (j=nodes[tagNames[i]].length; j--;) { + if (self.hasClass(nodes[tagNames[i]][j],className)) { + matches.push(nodes[tagNames[i]][j]); + } + } + } + } else { + for (i=0; i 1) { + // only catch left-clicks + return true; + } + var o = self.getTheDamnLink(e); + if (o.nodeName.toLowerCase() != 'a') { + o = self.isChildOfNode(o,'a'); + if (!o) return true; + } + if (!self.isChildOfClass(o,'ui360')) { + // not a link we're interested in + return true; + } + var sURL = o.getAttribute('href'); + if (!o.href || !sm.canPlayLink(o) || self.hasClass(o,self.excludeClass)) { + return true; // pass-thru for non-MP3/non-links + } + sm._writeDebug('handleClick()'); + var soundURL = (o.href); + var thisSound = self.getSoundByURL(soundURL); + if (thisSound) { + // already exists + if (thisSound == self.lastSound) { + // and was playing (or paused) + thisSound.togglePause(); + } else { + // different sound + thisSound.togglePause(); // start playing current + sm._writeDebug('sound different than last sound: '+self.lastSound.sID); + if (self.lastSound) { + self.stopSound(self.lastSound); + } + } + } else { + // append some dom shiz + + // create sound + thisSound = sm.createSound({ + id:'ui360Sound'+(self.soundCount++), + url:soundURL, + onplay:self.events.play, + onstop:self.events.stop, + onpause:self.events.pause, + onresume:self.events.resume, + onfinish:self.events.finish, + onbufferchange:self.events.bufferchange, + whileloading:self.events.whileloading, + whileplaying:self.events.whileplaying + }); + var oContainer = o.parentNode; + // tack on some custom data + + thisSound._360data = { + oUI360: self.getParentByClassName(o,'ui360'), // the (whole) entire container + oLink: o, // DOM node for reference within SM2 object event handlers + className: self.css.sPlaying, + oUIBox: self.getElementsByClassName('sm2-360ui','div',oContainer)[0], + oCanvas: self.getElementsByClassName('sm2-canvas','canvas',oContainer)[0], + oButton: self.getElementsByClassName('sm2-360btn','img',oContainer)[0], + oTiming: self.getElementsByClassName('sm2-timing','div',oContainer)[0], + oCover: self.getElementsByClassName('sm2-cover','div',oContainer)[0], + lastTime: null, + didFinish: null, + pauseCount:0, + radius:0, + amplifier: (self.config.usePeakData?0.9:1), // TODO: x1 if not being used, else use dynamic "how much to amplify by" value + radiusMax: self.config.circleDiameter*0.175, // circle radius + width:0, + widthMax: self.config.circleDiameter*0.4, // width of the outer ring + lastValues: { + bytesLoaded: 0, + bytesTotal: 0, + position: 0, + durationEstimate: 0 + }, // used to track "last good known" values before sound finish/reset for anim + animating: false, + oAnim: new Animator({ + duration: self.config.animDuration, + transition:self.config.animTransition, + onComplete: function() { + // var thisSound = this; + // thisSound._360data.didFinish = false; // reset full circle + } + }), + oAnimProgress: function(nProgress) { + var thisSound = this; + thisSound._360data.radius = parseInt(thisSound._360data.radiusMax*thisSound._360data.amplifier*nProgress); + thisSound._360data.width = parseInt(thisSound._360data.widthMax*thisSound._360data.amplifier*nProgress); + if (self.config.scaleFont && self.config.fontSizeMax != null) { + thisSound._360data.oTiming.style.fontSize = parseInt(Math.max(1,self.config.fontSizeMax*nProgress))+'px'; + thisSound._360data.oTiming.style.opacity = nProgress; + } + if (thisSound.paused || thisSound.playState == 0 || thisSound._360data.lastValues.bytesLoaded == 0 || thisSound._360data.lastValues.position == 0) { + self.updatePlaying.apply(thisSound); + } + }, + fps: 0 + }; + + // "Metadata" (annotations) + if (typeof self.Metadata != 'undefined' && self.getElementsByClassName('metadata','div',thisSound._360data.oUI360).length) { + thisSound._360data.metadata = new self.Metadata(thisSound,self); + } + + // set the cover width/height to match the canvas + thisSound._360data.oCover.style.width = self.config.circleDiameter+'px'; + thisSound._360data.oCover.style.height = self.config.circleDiameter+'px'; + + // minimize ze font + if (self.config.scaleFont && self.config.fontSizeMax != null) { + thisSound._360data.oTiming.style.fontSize = '1px'; + } + + // set up ze animation + thisSound._360data.oAnim.addSubject(thisSound._360data.oAnimProgress,thisSound); + + // animate the radius out nice + self.refreshCoords(thisSound); + + self.updatePlaying.apply(thisSound); + + self.soundsByURL[soundURL] = thisSound; + self.sounds.push(thisSound); + if (self.lastSound) { + self.stopSound(self.lastSound); + } + thisSound.play(); + } + + self.lastSound = thisSound; // reference for next call + + if (typeof e != 'undefined' && typeof e.preventDefault != 'undefined') { + e.preventDefault(); + } else if (typeof event != 'undefined') { + event.returnValue = false; + } + return false; + } + + this.fanOut = function(oSound) { + var thisSound = oSound; + if (thisSound._360data.animating == 1) { + return false; + } + thisSound._360data.animating = 0; + soundManager._writeDebug('fanOut: '+thisSound.sID+': '+thisSound._360data.oLink.href); + thisSound._360data.oAnim.seekTo(1); // play to end + window.setTimeout(function() { + // oncomplete hack + thisSound._360data.animating = 0; + },self.config.animDuration+20); + } + + this.fanIn = function(oSound) { + var thisSound = oSound; + if (thisSound._360data.animating == -1) { + return false; + } + thisSound._360data.animating = -1; + soundManager._writeDebug('fanIn: '+thisSound.sID+': '+thisSound._360data.oLink.href); + // massive hack + thisSound._360data.oAnim.seekTo(0); // play to end + window.setTimeout(function() { + // reset full 360 fill after animation has completed (oncomplete hack) + thisSound._360data.didFinish = false; + thisSound._360data.animating = 0; + self.resetLastValues(thisSound); + },self.config.animDuration+20); + + } + + this.resetLastValues = function(oSound) { + var oData = oSound._360data; + oData.lastValues.position = 0; + // oData.lastValues.bytesLoaded = 0; // will likely be cached, if file is small + // oData.lastValues.bytesTotal = 0; + // oData.lastValues.durationEstimate = 0; + } + + this.refreshCoords = function(thisSound) { + thisSound._360data.canvasXY = self.findXY(thisSound._360data.oCanvas); + // thisSound._360data.canvasMid = [Math.floor(thisSound._360data.oCanvas.offsetWidth/2), Math.floor(thisSound._360data.oCanvas.offsetHeight/2)]; // doesn't work in IE, w/h are wrong + thisSound._360data.canvasMid = [self.config.circleRadius,self.config.circleRadius]; + thisSound._360data.canvasMidXY = [thisSound._360data.canvasXY[0]+thisSound._360data.canvasMid[0], thisSound._360data.canvasXY[1]+thisSound._360data.canvasMid[1]]; + } + + this.stopSound = function(oSound) { + soundManager._writeDebug('stopSound: '+oSound.sID); + soundManager.stop(oSound.sID); + soundManager.unload(oSound.sID); + } + + this.buttonClick = function(e) { + var o = e?(e.target?e.target:e.srcElement):event.srcElement; + self.handleClick({target:self.getParentByClassName(o,'sm2-360ui').nextSibling}); // link next to the nodes we inserted + return false; + } + + this.buttonMouseDown = function(e) { + // user might decide to drag from here + // watch for mouse move + if (!isTouchDevice) { + document.onmousemove = function(e) { + // should be boundary-checked, really (eg. move 3px first?) + self.mouseDown(e); + } + } else { + self.addEventHandler(document,'touchmove',self.mouseDown); + } + self.stopEvent(e); + return false; + } + + this.mouseDown = function(e) { + if (!self.lastSound) { + self.stopEvent(e); + return false; + } + var thisSound = self.lastSound; + // just in case, update coordinates (maybe the element moved since last time.) + self.refreshCoords(thisSound); + var oData = self.lastSound._360data; + self.addClass(oData.oUIBox,'sm2_dragging'); + oData.pauseCount = (self.lastSound.paused?1:0); + // self.lastSound.pause(); + self.mmh(e?e:event); + if (isTouchDevice) { + self.removeEventHandler(document,'touchmove',self.mouseDown); + self.addEventHandler(document,'touchmove',self.mmh); + self.addEventHandler(document,'touchend',self.mouseUp); + } else { + document.onmousemove = self.mmh; + document.onmouseup = self.mouseUp; + } + self.stopEvent(e); + return false; + } + + this.mouseUp = function(e) { + var oData = self.lastSound._360data; + self.removeClass(oData.oUIBox,'sm2_dragging'); + if (oData.pauseCount == 0) { + self.lastSound.resume(); + } + if (!isTouchDevice) { + document.onmousemove = null; + document.onmouseup = null; + } else { + self.removeEventHandler(document,'touchmove',self.mmh); + self.removeEventHandler(document,'touchend',self.mouseUP); + } + } + + var fullCircle = 360; + + this.mmh = function(e) { + if (typeof e == 'undefined') { + var e = event; + } + var oSound = self.lastSound; + var coords = self.getMouseXY(e); + var x = coords[0]; + var y = coords[1]; + var deltaX = x-oSound._360data.canvasMidXY[0]; + var deltaY = y-oSound._360data.canvasMidXY[1]; + var angle = Math.floor(fullCircle-(self.rad2deg(Math.atan2(deltaX,deltaY))+180)); + oSound.setPosition(oSound.durationEstimate*(angle/fullCircle)); + self.stopEvent(e); + return false; + } + + // assignMouseDown(); + + this.drawSolidArc = function(oCanvas, color, radius, width, radians, startAngle, noClear) { + + // thank you, http://www.snipersystems.co.nz/community/polarclock/tutorial.html + + var x = radius; + var y = radius; + + var canvas = oCanvas; + + if (canvas.getContext){ + // use getContext to use the canvas for drawing + var ctx = canvas.getContext('2d'); + } + + // var startAngle = 0; + var oCanvas = ctx; + + if (!noClear) { + self.clearCanvas(canvas); + } + // ctx.restore(); + + if (color) { + ctx.fillStyle = color; + } else { + // ctx.fillStyle = 'black'; + } + + oCanvas.beginPath(); + + if (isNaN(radians)) { + radians = 0; + } + + var innerRadius = radius-width; + var doesntLikeZero = (isOpera || isSafari); // safari 4 doesn't actually seem to mind. + + if (!doesntLikeZero || (doesntLikeZero && radius > 0)) { + oCanvas.arc(0, 0, radius, startAngle, radians, false); + var endPoint = self.getArcEndpointCoords(innerRadius, radians); + oCanvas.lineTo(endPoint.x, endPoint.y); + oCanvas.arc(0, 0, innerRadius, radians, startAngle, true); + oCanvas.closePath(); + oCanvas.fill(); + } + + } + + this.getArcEndpointCoords = function(radius, radians) { + return { + x: radius * Math.cos(radians), + y: radius * Math.sin(radians) + }; + } + + +this.deg2rad = function(nDeg) { + return (nDeg * Math.PI/180); +} + +this.rad2deg = function(nRad) { + return (nRad * 180/Math.PI); +} + +this.getTime = function(nMSec,bAsString) { + // convert milliseconds to mm:ss, return as object literal or string + var nSec = Math.floor(nMSec/1000); + var min = Math.floor(nSec/60); + var sec = nSec-(min*60); + // if (min == 0 && sec == 0) return null; // return 0:00 as null + return (bAsString?(min+':'+(sec<10?'0'+sec:sec)):{'min':min,'sec':sec}); +} + +this.clearCanvas = function(oCanvas) { + var canvas = oCanvas; + var ctx = null; + if (canvas.getContext){ + // use getContext to use the canvas for drawing + ctx = canvas.getContext('2d'); + } + var width = canvas.offsetWidth; + var height = canvas.offsetHeight; + ctx.clearRect(-(width/2), -(height/2), width, height); +} + + +var fullCircle = (isOpera||isChrome?359.9:360); // I dunno what Opera doesn't like about this. + +this.updatePlaying = function() { + if (this.bytesLoaded) { + this._360data.lastValues.bytesLoaded = this.bytesLoaded; + this._360data.lastValues.bytesTotal = this.bytesTotal; + } + if (this.position) { + this._360data.lastValues.position = this.position; + } + if (this.durationEstimate) { + this._360data.lastValues.durationEstimate = this.durationEstimate; + } + + self.drawSolidArc(this._360data.oCanvas,self.config.backgroundRingColor,this._360data.width,this._360data.radius,self.deg2rad(fullCircle),false); + + self.drawSolidArc(this._360data.oCanvas,(this._360data.metadata?self.config.loadRingColorMetadata:self.config.loadRingColor),this._360data.width,this._360data.radius,self.deg2rad(fullCircle*(this._360data.lastValues.bytesLoaded/this._360data.lastValues.bytesTotal)),0,true); + + if (this._360data.lastValues.position != 0) { + // don't draw if 0 (full black circle in Opera) + self.drawSolidArc(this._360data.oCanvas,(this._360data.metadata?self.config.playRingColorMetadata:self.config.playRingColor),this._360data.width,this._360data.radius,self.deg2rad((this._360data.didFinish==1?fullCircle:fullCircle*(this._360data.lastValues.position/this._360data.lastValues.durationEstimate))),0,true); + } + + // metadata goes here + if (this._360data.metadata) { + this._360data.metadata.events.whileplaying(); + } + + var timeNow = (self.config.showHMSTime?self.getTime(this.position,true):parseInt(this.position/1000)); + + if (timeNow != this._360data.lastTime) { + this._360data.lastTime = timeNow; + this._360data.oTiming.innerHTML = timeNow; + } + + // draw spectrum, if applicable + if (!isIE) { // IE can render maybe 3 or 4 FPS when including the wave/EQ, so don't bother. + self.updateWaveform(this); + // self.updateWaveformOld(this); + } + + if (self.config.useFavIcon && self.vuMeter) { + self.vuMeter.updateVU(this); + } + +} + + this.updateWaveform = function(oSound) { + + if ((!self.config.useWaveformData && !self.config.useEQData) || (!sm.features.waveformData && !sm.features.eqData)) { + // feature not enabled.. + return false; + } + + if (!oSound.waveformData.left.length && !oSound.eqData.length && !oSound.peakData.left) { + // no data (or errored out/paused/unavailable?) + return false; + } + + /* use for testing the data */ + /* + for (i=0; i<256; i++) { + oSound.eqData[i] = 1-(i/256); + } + */ + + var oCanvas = oSound._360data.oCanvas.getContext('2d'); + var offX = 0; + var offY = parseInt(self.config.circleDiameter/2); + var scale = offY/2; // Y axis (+/- this distance from 0) + var lineWidth = Math.floor(self.config.circleDiameter-(self.config.circleDiameter*0.175)/(self.config.circleDiameter/255)); // width for each line + lineWidth = 1; + var lineHeight = 1; + var thisY = 0; + var offset = offY; + + if (self.config.useWaveformData) { + // raw waveform + var downSample = self.config.waveformDataDownsample; // only sample X in 256 (greater number = less sample points) + downSample = Math.max(1,downSample); // make sure it's at least 1 + var dataLength = 256; + var sampleCount = (dataLength/downSample); + var startAngle = 0; + var endAngle = 0; + var waveData = null; + var innerRadius = (self.config.waveformDataOutside?1:(self.config.waveformDataConstrain?0.5:0.565)); + var scale = (self.config.waveformDataOutside?0.7:0.75); + var perItemAngle = self.deg2rad((360/sampleCount)*self.config.waveformDataLineRatio); // 0.85 = clean pixel lines at 150? // self.deg2rad(360*(Math.max(1,downSample-1))/sampleCount); + for (var i=0; i16500 Hz), most stuff won't actually use it. + var sampleCount = (eqSamples/downSample); + var innerRadius = (self.config.eqDataOutside?1:0.565); + var direction = (self.config.eqDataOutside?-1:1); + var scale = (self.config.eqDataOutside?0.5:0.75); + var startAngle = 0; + var endAngle = 0; + var perItemAngle = self.deg2rad((360/sampleCount)*self.config.eqDataLineRatio); // self.deg2rad(360/(sampleCount+1)); + var playedAngle = self.deg2rad((oSound._360data.didFinish==1?360:360*(oSound._360data.lastValues.position/oSound._360data.lastValues.durationEstimate))); + var j=0; + var iAvg = 0; + for (var i=0; iplayedAngle?self.config.eqDataColor:self.config.playRingColor),oSound._360data.width*innerRadius,oSound._360data.radius*scale*(oSound.eqData.left[i]*direction),endAngle,startAngle,true); + } + } + + if (self.config.usePeakData) { + if (!oSound._360data.animating) { + var nPeak = (oSound.peakData.left||oSound.peakData.right); + // GIANT HACK: use EQ spectrum data for bass frequencies + var eqSamples = 3; + for (var i=0; i', + ' ', // note use of imageMap, edit or remove if you use a different-size image. + '
', // + Ever-so-slight Safari horizontal alignment tweak + '
' + ]; + } + + this.init = function() { + sm._writeDebug('threeSixtyPlayer.init()'); + var oItems = self.getElementsByClassName('ui360','div'); + var oLinks = []; + + for (var i=0,j=oItems.length; i0) { + self.addEventHandler(document,'click',self.handleClick); + if (self.config.autoPlay) { + self.handleClick({target:self.links[0],preventDefault:function(){}}); + } + } + sm._writeDebug('threeSixtyPlayer.init(): Found '+foundItems+' relevant items.'); + + if (self.config.useFavIcon && typeof this.VUMeter != 'undefined') { + this.vuMeter = new this.VUMeter(this); + } + + } + +} + +// Optional: VU Meter component + +ThreeSixtyPlayer.prototype.VUMeter = function(oParent) { + + var self = oParent; + var me = this; + this.vuMeterData = []; + this.vuDataCanvas = null; + var _head = document.getElementsByTagName('head')[0]; + var isOpera = (navigator.userAgent.match(/opera/i)); + var isFirefox = (navigator.userAgent.match(/firefox/i)); + + this.setPageIcon = function(sDataURL) { + + if (!self.config.useFavIcon || !self.config.usePeakData || !sDataURL) { + return false; + } + + var link = document.getElementById('sm2-favicon'); + if (link) { + _head.removeChild(link); + link = null; + } + if (!link) { + link = document.createElement('link'); + link.id = 'sm2-favicon'; + link.rel = 'shortcut icon'; + link.type = 'image/png'; + link.href = sDataURL; + document.getElementsByTagName('head')[0].appendChild(link); + } + } + + this.resetPageIcon = function() { + if (!self.config.useFavIcon) { + return false; + } + var link = document.getElementById('favicon'); + if (link) { + link.href = '/favicon.ico'; + } + } + + this.updateVU = function(oSound) { + if (soundManager.flashVersion >= 9 && self.config.useFavIcon && self.config.usePeakData) { + me.setPageIcon(me.vuMeterData[parseInt(16*oSound.peakData.left)][parseInt(16*oSound.peakData.right)]); + } + } + + this.createVUData = function() { + var i=0; + var j=0; + var canvas = me.vuDataCanvas.getContext('2d'); + var vuGrad = canvas.createLinearGradient(0, 16, 0, 0); + vuGrad.addColorStop(0,'rgb(0,192,0)'); + vuGrad.addColorStop(0.30,'rgb(0,255,0)'); + vuGrad.addColorStop(0.625,'rgb(255,255,0)'); + vuGrad.addColorStop(0.85,'rgb(255,0,0)'); + var bgGrad = canvas.createLinearGradient(0, 16, 0, 0); + var outline = 'rgba(0,0,0,0.2)'; + bgGrad.addColorStop(0,outline); + bgGrad.addColorStop(1,'rgba(0,0,0,0.5)'); + for (i=0; i<16; i++) { + me.vuMeterData[i] = []; + } + for (var i=0; i<16; i++) { + for (j=0; j<16; j++) { + // reset/erase canvas + me.vuDataCanvas.setAttribute('width',16); + me.vuDataCanvas.setAttribute('height',16); + // draw new stuffs + canvas.fillStyle = bgGrad; + canvas.fillRect(0,0,7,15); + canvas.fillRect(8,0,7,15); + /* + // shadow + canvas.fillStyle = 'rgba(0,0,0,0.1)'; + canvas.fillRect(1,15-i,7,17-(17-i)); + canvas.fillRect(9,15-j,7,17-(17-j)); + */ + canvas.fillStyle = vuGrad; + canvas.fillRect(0,15-i,7,16-(16-i)); + canvas.fillRect(8,15-j,7,16-(16-j)); + // and now, clear out some bits. + canvas.clearRect(0,3,16,1); + canvas.clearRect(0,7,16,1); + canvas.clearRect(0,11,16,1); + me.vuMeterData[i][j] = me.vuDataCanvas.toDataURL('image/png'); + // for debugging VU images + /* + var o = document.createElement('img'); + o.style.marginRight = '5px'; + o.src = vuMeterData[i][j]; + document.documentElement.appendChild(o); + */ + } + } + }; + + this.testCanvas = function(noOpaque) { + // canvas + toDataURL(); + var c = document.createElement('canvas'); + var ctx = null; + if (!c || typeof c.getContext == 'undefined') { + return null; + } + ctx = c.getContext('2d'); + if (!ctx || typeof c.toDataURL != 'function') { + return null; + } + // just in case.. + try { + var ok = c.toDataURL('image/png'); + } catch(e) { + // no canvas or no toDataURL() + return null; + } + // assume we're all good. + return c; + } + + this.init = function() { + if (self.config.useFavIcon) { + me.vuDataCanvas = me.testCanvas(true); + if (me.vuDataCanvas && (isFirefox || isOpera)) { + // these browsers support dynamically-updating the favicon + me.createVUData(); + } else { + // browser doesn't support doing this + self.config.useFavIcon = false; + } + } + } + + this.init(); + +} + +// completely optional: Metadata/annotations/segments code + +ThreeSixtyPlayer.prototype.Metadata = function(oSound, oParent) { + soundManager._wD('Metadata()'); + var me = this; + var oBox = oSound._360data.oUI360; + var o = oBox.getElementsByTagName('ul')[0]; + var oItems = o.getElementsByTagName('li'); + var isFirefox = (navigator.userAgent.match(/firefox/i)); + this.lastWPExec = 0; + this.refreshInterval = 250; + + var isAlt = false; + + this.events = { + whileplaying: function() { + var width = oSound._360data.width; + var radius = oSound._360data.radius; + var fullDuration = (oSound.durationEstimate||(me.totalTime*1000)); + var isAlt = null; + for (var i=0,j=me.data.length; ime.refreshInterval) { + me.refresh(); + me.lastWPExec = d; + } + } + } + + this.refresh = function() { + // Display info as appropriate + var index = null; + var now = oSound.position; + var metadata = oSound._360data.metadata.data; + for (var i=0, j=metadata.length; i= metadata[i].startTimeMS && now <= metadata[i].endTimeMS) { + index = i; + break; + } + } + if (index != metadata.currentItem && index < metadata.length) { + // update + oSound._360data.oLink.innerHTML = metadata.mainTitle+' '; + // self.setPageTitle(metadata[index].title+' | '+metadata.mainTitle); + metadata.currentItem = index; + } + } + + this.totalTime = 0; + + this.strToTime = function(sTime) { + var segments = sTime.split(':'); + var seconds = 0; + for (var i=segments.length; i--;) { + seconds += parseInt(segments[i])*Math.pow(60,segments.length-1-i,10); // hours, minutes + } + return seconds; + } + + this.data = []; + this.data.givenDuration = null; + this.data.currentItem = null; + this.data.mainTitle = oSound._360data.oLink.innerHTML; + for (var i=0; i= Math.abs(this.state - this.target)) { + this.state = this.target; + } else { + this.state += movement; + } + + try { + this.propagate(); + } finally { + this.options.onStep.call(this); + if (this.target == this.state) { + window.clearInterval(this.intervalId); + this.intervalId = null; + this.options.onComplete.call(this); + } + } + }, + // shortcuts + play: function() {this.seekFromTo(0, 1)}, + reverse: function() {this.seekFromTo(1, 0)}, + // return a string describing this Animator, for debugging + inspect: function() { + var str = "# 20) return; + } + }, + getStyle: function(state) { + state = this.from + ((this.to - this.from) * state); + if (this.property == 'filter') return "alpha(opacity=" + Math.round(state*100) + ")"; + if (this.property == 'opacity') return state; + return Math.round(state) + this.units; + }, + inspect: function() { + return "\t" + this.property + "(" + this.from + this.units + " to " + this.to + this.units + ")\n"; + } +} + +// animates a colour based style property between two hex values +function ColorStyleSubject(els, property, from, to) { + this.els = Animator.makeArray(els); + this.property = Animator.camelize(property); + this.to = this.expandColor(to); + this.from = this.expandColor(from); + this.origFrom = from; + this.origTo = to; +} + +ColorStyleSubject.prototype = { + // parse "#FFFF00" to [256, 256, 0] + expandColor: function(color) { + var hexColor, red, green, blue; + hexColor = ColorStyleSubject.parseColor(color); + if (hexColor) { + red = parseInt(hexColor.slice(1, 3), 16); + green = parseInt(hexColor.slice(3, 5), 16); + blue = parseInt(hexColor.slice(5, 7), 16); + return [red,green,blue] + } + if (window.DEBUG) { + alert("Invalid colour: '" + color + "'"); + } + }, + getValueForState: function(color, state) { + return Math.round(this.from[color] + ((this.to[color] - this.from[color]) * state)); + }, + setState: function(state) { + var color = '#' + + ColorStyleSubject.toColorPart(this.getValueForState(0, state)) + + ColorStyleSubject.toColorPart(this.getValueForState(1, state)) + + ColorStyleSubject.toColorPart(this.getValueForState(2, state)); + for (var i=0; i 255) number = 255; + var digits = number.toString(16); + if (number < 16) return '0' + digits; + return digits; +} +ColorStyleSubject.parseColor.rgbRe = /^rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/i; +ColorStyleSubject.parseColor.hexRe = /^\#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/; + +// Animates discrete styles, i.e. ones that do not scale but have discrete values +// that can't be interpolated +function DiscreteStyleSubject(els, property, from, to, threshold) { + this.els = Animator.makeArray(els); + this.property = Animator.camelize(property); + this.from = from; + this.to = to; + this.threshold = threshold || 0.5; +} + +DiscreteStyleSubject.prototype = { + setState: function(state) { + var j=0; + for (var i=0; i section ? 1 : 0); + } + if (this.options.rememberance) { + document.location.hash = this.rememberanceTexts[section]; + } + } +} diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/script/excanvas.js b/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/script/excanvas.js new file mode 100755 index 0000000..d748873 --- /dev/null +++ b/docs/dymaxion/soundmanagerv297a-20101010/demo/360-player/script/excanvas.js @@ -0,0 +1,17 @@ +// Excanvas (Explorer Canvas) R43 +// http://excanvas.sourceforge.net/ +// Copyright 2006 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +if(!document.createElement("canvas").getContext){(function(){var u=Math;var v=u.round;var r=u.sin;var C=u.cos;var l=u.abs;var B=u.sqrt;var a=10;var n=a/2;function g(){return this.context_||(this.context_=new p(this))}var t=Array.prototype.slice;function D(j,m,E){var i=t.call(arguments,2);return function(){return j.apply(m,i.concat(t.call(arguments)))}}var h={init:function(i){if(/MSIE/.test(navigator.userAgent)&&!window.opera){var j=i||document;j.createElement("canvas");j.attachEvent("onreadystatechange",D(this.init_,this,j))}},init_:function(F){if(!F.namespaces.g_vml_){F.namespaces.add("g_vml_","urn:schemas-microsoft-com:vml","#default#VML")}if(!F.namespaces.g_o_){F.namespaces.add("g_o_","urn:schemas-microsoft-com:office:office","#default#VML")}if(!F.styleSheets.ex_canvas_){var E=F.createStyleSheet();E.owningElement.id="ex_canvas_";E.cssText="canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}g_vml_\\:*{behavior:url(#default#VML)}g_o_\\:*{behavior:url(#default#VML)}"}var m=F.getElementsByTagName("canvas");for(var j=0;j','","");this.element_.insertAdjacentHTML("BeforeEnd",Y.join(""))};k.stroke=function(ae){var J=[];var K=false;var ap=c(ae?this.fillStyle:this.strokeStyle);var aa=ap.color;var ak=ap.alpha*this.globalAlpha;var F=10;var M=10;J.push("V.x){V.x=ai.x}if(ao.y==null||ai.yV.y){V.y=ai.y}}}J.push(' ">');if(!ae){var U=this.lineScale_*this.lineWidth;if(U<1){ak*=U}J.push("')}else{if(typeof this.fillStyle=="object"){var N=this.fillStyle;var S=0;var ah={x:0,y:0};var ab=0;var Q=1;if(N.type_=="gradient"){var P=N.x0_/this.arcScaleX_;var m=N.y0_/this.arcScaleY_;var O=N.x1_/this.arcScaleX_;var aq=N.y1_/this.arcScaleY_;var am=this.getCoords_(P,m);var al=this.getCoords_(O,aq);var I=al.x-am.x;var G=al.y-am.y;S=Math.atan2(I,G)*180/Math.PI;if(S<0){S+=360}if(S<0.000001){S=0}}else{var am=this.getCoords_(N.x0_,N.y0_);var j=V.x-ao.x;var E=V.y-ao.y;ah={x:(am.x-ao.x)/j,y:(am.y-ao.y)/E};j/=this.arcScaleX_*a;E/=this.arcScaleY_*a;var ag=u.max(j,E);ab=2*N.r0_/ag;Q=2*N.r1_/ag-ab}var Z=N.colors_;Z.sort(function(H,i){return H.offset-i.offset});var T=Z.length;var Y=Z[0].color;var X=Z[T-1].color;var ad=Z[0].alpha*this.globalAlpha;var ac=Z[T-1].alpha*this.globalAlpha;var af=[];for(var aj=0;aj')}else{J.push('')}}J.push("");this.element_.insertAdjacentHTML("beforeEnd",J.join(""))};k.fill=function(){this.stroke(true)};k.closePath=function(){this.currentPath_.push({type:"close"})};k.getCoords_=function(E,j){var i=this.m_;return{x:a*(E*i[0][0]+j*i[1][0]+i[2][0])-n,y:a*(E*i[0][1]+j*i[1][1]+i[2][1])-n}};k.save=function(){var i={};w(this,i);this.aStack_.push(i);this.mStack_.push(this.m_);this.m_=d(q(),this.m_)};k.restore=function(){w(this.aStack_.pop(),this);this.m_=this.mStack_.pop()};k.translate=function(m,j){var i=[[1,0,0],[0,1,0],[m,j,1]];this.m_=d(i,this.m_)};k.rotate=function(j){var E=C(j);var m=r(j);var i=[[E,m,0],[-m,E,0],[0,0,1]];this.m_=d(i,this.m_)};k.scale=function(G,F){this.arcScaleX_*=G;this.arcScaleY_*=F;var j=[[G,0,0],[0,F,0],[0,0,1]];var i=this.m_=d(j,this.m_);var E=i[0][0]*i[1][1]-i[0][1]*i[1][0];this.lineScale_=B(l(E))};k.clip=function(){};k.arcTo=function(){};k.createPattern=function(){return new f};function z(i){this.type_=i;this.x0_=0;this.y0_=0;this.r0_=0;this.x1_=0;this.y1_=0;this.r1_=0;this.colors_=[]}z.prototype.addColorStop=function(j,i){i=c(i);this.colors_.push({offset:j,color:i.color,alpha:i.alpha})};function f(){}G_vmlCanvasManager=h;CanvasRenderingContext2D=p;CanvasGradient=z;CanvasPattern=f})()}; \ No newline at end of file diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/360ui-screenshot1.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/360ui-screenshot1.png new file mode 100755 index 0000000..8684432 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/360ui-screenshot1.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/360ui-screenshot2.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/360ui-screenshot2.png new file mode 100755 index 0000000..b0700fe Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/360ui-screenshot2.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/360ui-screenshot3.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/360ui-screenshot3.png new file mode 100755 index 0000000..8ba6617 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/360ui-screenshot3.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/360ui-screenshot4.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/360ui-screenshot4.png new file mode 100755 index 0000000..ab67cc7 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/360ui-screenshot4.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/8tracks-logo.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/8tracks-logo.png new file mode 100755 index 0000000..e1dbc64 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/8tracks-logo.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/discogs.gif b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/discogs.gif new file mode 100755 index 0000000..d039d51 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/discogs.gif differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/flash9-dark.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/flash9-dark.png new file mode 100755 index 0000000..d76a3a1 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/flash9-dark.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/flash9.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/flash9.png new file mode 100755 index 0000000..77da060 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/flash9.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/getsatisfaction-icon.gif b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/getsatisfaction-icon.gif new file mode 100755 index 0000000..f3762c7 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/getsatisfaction-icon.gif differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/hue_thumb.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/hue_thumb.png new file mode 100755 index 0000000..413ee98 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/hue_thumb.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/lastfm.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/lastfm.png new file mode 100755 index 0000000..623005a Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/lastfm.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/mixcrate.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/mixcrate.png new file mode 100755 index 0000000..7e21115 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/mixcrate.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/muxtape-logo.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/muxtape-logo.png new file mode 100755 index 0000000..a29bfd7 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/muxtape-logo.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/new-bw.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/new-bw.png new file mode 100755 index 0000000..e9dc665 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/new-bw.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/new-dark.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/new-dark.png new file mode 100755 index 0000000..549158d Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/new-dark.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/new.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/new.png new file mode 100755 index 0000000..62e05e4 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/new.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/opera.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/opera.png new file mode 100755 index 0000000..9baf845 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/opera.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/picker_thumb.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/picker_thumb.png new file mode 100755 index 0000000..f757cc6 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/picker_thumb.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/slider-1.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/slider-1.png new file mode 100755 index 0000000..b7a5f32 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/slider-1.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/slider-bar.gif b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/slider-bar.gif new file mode 100755 index 0000000..8e25d0e Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/slider-bar.gif differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/slider.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/slider.png new file mode 100755 index 0000000..abcbf8b Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/slider.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/soundcloud-thecloudplayer-logo.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/soundcloud-thecloudplayer-logo.png new file mode 100755 index 0000000..f88af99 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/soundcloud-thecloudplayer-logo.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/speaker.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/speaker.png new file mode 100755 index 0000000..9197793 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/speaker.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/wedge.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/wedge.png new file mode 100755 index 0000000..b55dd08 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_image/wedge.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/1hz-10khz-sweep.mp3 b/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/1hz-10khz-sweep.mp3 new file mode 100755 index 0000000..226ac1e Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/1hz-10khz-sweep.mp3 differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/440hz.mp3 b/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/440hz.mp3 new file mode 100755 index 0000000..e2dd5e0 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/440hz.mp3 differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/880hz.mp3 b/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/880hz.mp3 new file mode 100755 index 0000000..756e8d9 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/880hz.mp3 differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/background0.mp3 b/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/background0.mp3 new file mode 100755 index 0000000..3816dd7 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/background0.mp3 differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/background1.mp3 b/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/background1.mp3 new file mode 100755 index 0000000..9e9c638 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/background1.mp3 differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/background2.mp3 b/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/background2.mp3 new file mode 100755 index 0000000..ec251cf Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/background2.mp3 differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/bass.mp3 b/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/bass.mp3 new file mode 100755 index 0000000..adc281f Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/bass.mp3 differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/button-0.mp3 b/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/button-0.mp3 new file mode 100755 index 0000000..243c3e5 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/button-0.mp3 differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/button-1.mp3 b/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/button-1.mp3 new file mode 100755 index 0000000..a2833fd Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/button-1.mp3 differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/click-high.mp3 b/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/click-high.mp3 new file mode 100755 index 0000000..afb09d7 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/click-high.mp3 differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/click-low.mp3 b/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/click-low.mp3 new file mode 100755 index 0000000..9cbe8fe Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/click-low.mp3 differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/coins.mp3 b/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/coins.mp3 new file mode 100755 index 0000000..f0c2401 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/coins.mp3 differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/fancy-beer-bottle-pop.mp3 b/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/fancy-beer-bottle-pop.mp3 new file mode 100755 index 0000000..4498874 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/fancy-beer-bottle-pop.mp3 differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/mak.mp3 b/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/mak.mp3 new file mode 100755 index 0000000..9bc9af3 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/mak.mp3 differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/mouseover.mp3 b/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/mouseover.mp3 new file mode 100755 index 0000000..9e9a4f4 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/mouseover.mp3 differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/mouseover2.mp3 b/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/mouseover2.mp3 new file mode 100755 index 0000000..9273f99 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/mouseover2.mp3 differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/mouseover3.mp3 b/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/mouseover3.mp3 new file mode 100755 index 0000000..93d04be Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/mouseover3.mp3 differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/select.mp3 b/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/select.mp3 new file mode 100755 index 0000000..9f9c711 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/select.mp3 differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/sine, square, sawtooth, rando.mp3 b/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/sine, square, sawtooth, rando.mp3 new file mode 100755 index 0000000..a649164 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/_mp3/sine, square, sawtooth, rando.mp3 differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-1/css/animation.css b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-1/css/animation.css new file mode 100755 index 0000000..380a671 --- /dev/null +++ b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-1/css/animation.css @@ -0,0 +1,74 @@ +body { + font-size:75%; +} + +h1, h2, h3 { + font:normal 3em "Helvetica Neue Light","Helvetica Neue",helvetica,georgia,"times new roman","Arial Rounded MT Bold",verdana,tahoma,arial,"sans serif"; + font-weight:normal; + margin-bottom:0px; +} + +h1, h2 { + letter-spacing:-1px; /* zomg web x.0! ;) */ +} + +h1, h2, h3 { + padding-bottom:1px; + margin-bottom:0.25em; +} + +h1 { + margin-top:0px; + margin-bottom:0px; + background-color:#666; + color:#ccc; + margin-left:-5px; + padding-left:5px; + padding-right:5px; + padding-bottom:5px; +} + +h1, +h1 a { + color:#fff; + text-decoration:none; +} + +h1 a:hover { + text-decoration:underline; +} + +h2 { + font-size:2em; + margin-top:1em; + background-color:#aaa; + color:#fff; + padding:5px; + margin-left:-5px; + min-width:23em; +} + +h3 { + font-size:1.65em; + margin-top:0.5em; + margin-bottom:0.25em; + color:#333; + min-width:28em; +} + +h3 a { + font-size:small; +} + +h4 { + color:#444; +} +p { + font:normal 1em/2em verdana,tahoma,arial,"sans serif"; +} + +.balls img { + position:absolute; + width:12px; + height:12px; +} \ No newline at end of file diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-1/image/ball.gif b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-1/image/ball.gif new file mode 100755 index 0000000..0f13534 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-1/image/ball.gif differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-1/index.html b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-1/index.html new file mode 100755 index 0000000..7d010a8 --- /dev/null +++ b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-1/index.html @@ -0,0 +1,46 @@ + + + + + + + + + + +
+ +

Interval-based animation (with sound)

+ +

+ Click + drag for fun. +

+ +

Speeding Up ExternalInterface: Keep .swf in view

+ +

SoundManager 2 now incorporates a "high performance" mode, which has been shown to noticeably improve timing and frequency of flash callbacks. This is important for timing, reducing delay between a JS call and the sound being played, etc.

+ +

To reduce audio delay and timing issues from slow JS/Flash communication, SM2 will try to ensure that the flash movie is visible on screen at all times. If hidden or otherwise off-screen, Flash will be given lower priority and thus JS/flash "lag" (ie., delay) will be introduced when trying to play audio "in sync."

+ +

Generally, positioning the flash movie using position:fixed and bottom/left or bottom/right 0px is the less-intrusive option.

+ +

+ Throw from mouse +

+

+ + +

+ + +

Sound source: "Acclivity", Free Sound Project

+ +
+ +
+ +
+ + + diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-1/script/animation.js b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-1/script/animation.js new file mode 100755 index 0000000..f167761 --- /dev/null +++ b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-1/script/animation.js @@ -0,0 +1,189 @@ +var balls = []; +var canvasX = 0; +var canvasY = 0; +var timer = null; +var m_lastX = 0; +var m_lastY = 0; +var M_SPACE = 24; +var B_VMIN = 5; +var B_VMAX = 5; +var B_WIDTH = 13; +var B_HEIGHT = 13; +var useMouse = null; +var ballSound = null; +var ballPopSound = null; + +function rnd(n) { + return Math.random()*n; +} + +function rndI(n) { + return parseInt(rnd(n)); +} + +function createBall(oParent) { + oParent.appendChild(balls[0].cloneNode(true)); + initBall(balls[balls.length-1],balls.length); +} + +function createBallAtMouse(e) { + e = e?e:event; + createBall(document.getElementById('ball-container')); + with (balls[balls.length-1]) { + _x = e.clientX; + _y = e.clientY; + if (useMouse.checked != false) { + _vX = (m_lastX-e.clientX)*-0.7; + _vY = (m_lastY-e.clientY)*-0.7; + } else { + _vX = 0; + _vY = 0; + } + } + moveBall(balls[balls.length-1]); +} + +function initBall(oBall,i) { + oBall._id = 'ball'+i; + oBall._active = true; + oBall._x = rnd(canvasX); + oBall._y = rnd(canvasY); + oBall._vX = B_VMIN+rnd(B_VMAX)*(Math.random()>0.5?1:-1); + oBall._vY = B_VMIN+rnd(B_VMAX); + oBall.style.display = 'block'; +} + +function moveBall(oBall) { + oBall._x += oBall._vX; + oBall._y += (oBall._vY++); // gravity! + var bounce = false; + if ((oBall._vX>0 && oBall._x+oBall._vX+B_WIDTH>canvasX) || (oBall._vX<0 && oBall._x+oBall._vX<0)) { + oBall._vX *= -1; + bounce = true; + } + if ((oBall._vY>0 && oBall._y+oBall._vY+B_HEIGHT>canvasY) || (oBall._vY<0 && oBall._y+oBall._vY<0)) { + // bounce on Y axis - with resistance on both axes + if (oBall._vY>0) oBall._y = canvasY-B_HEIGHT; // bounce exactly from bottom + oBall._vY *= -(oBall._vY>1?0.6:1); + bounce = true; + if (Math.abs(oBall._vX)>0.5) { + oBall._vX *= 0.85; + } else { + oBall._vX = 0; + } + if (Math.abs(oBall._vY)<=3 && Math.abs(oBall._vX==0)) { + oBall._active = false; + bounce = false; + ballPopSound.play(); + oBall.style.display = 'none'; + } + } + oBall.style.left = oBall._x+'px'; + oBall.style.top = oBall._y+'px'; + if (bounce) ballSound.play({pan:getPan(oBall._x,canvasX)}); +} + +function getPan(x,canvasX) { + var pos = x/canvasX; + var pan = null; + if (pos<=0.4) { + pan = Math.floor(-100+(pos/0.4*100)); + } else if (pos>0.4 && pos<=0.5) { + pan = 0; + } else { + pan = Math.floor(pos*100); + } + return pan; +} + +function animateStuff() { + for (var i=balls.length; i--;) { + if (balls[i]._active) moveBall(balls[i]); + } +} + +function startAnimation() { + if (!timer) timer = setInterval(animateStuff,20); + document.getElementById('b-start').disabled = true; + document.getElementById('b-stop').disabled = false; +} + +function stopAnimation() { + if (!timer) return false; + clearInterval(timer); + timer = null; + document.getElementById('b-start').disabled = false; + document.getElementById('b-stop').disabled = true; +} + +function mouseDown(e) { + e = e?e:event; + m_lastX = e.clientX; + m_lastY = e.clientY; + document.onmousemove = mouseMove; + document.onmouseup = mouseUp; + return false; +} + +function mouseMove(e) { + e = e?e:event; + if (Math.abs(e.clientX-m_lastX)>M_SPACE || Math.abs(e.clientY-m_lastY)>M_SPACE) { + createBallAtMouse(e); + m_lastX = e.clientX; + m_lastY = e.clientY; + } + return false; +} + +function mouseUp() { + document.onmousemove = null; + document.onmouseup = null; +} + +function init() { + ballSound = soundManager.createSound({ + id: 'ballSound', + url: '../animation/audio/fingerplop.mp3', + volume: 50, + multiShot: true, + autoLoad: true + }); + ballPopSound = soundManager.createSound({ + id: 'ballPopSound', + url: '../animation/audio/fingerplop2.mp3', + volume: 50, + multiShot: true, + autoLoad: true + }); + balls = document.getElementById('ball-container').getElementsByTagName('img'); + for (var i=balls.length; i--;) { + initBall(balls[i],i); + } + useMouse = document.getElementById('useMouse'); + useMouse.checked = true; + getWindowCoords(); + startAnimation(); + document.onmousedown = mouseDown; +} + +// I know this is kinda broken in Opera. +getWindowCoords = (navigator.userAgent.toLowerCase().indexOf('opera')>0||navigator.appVersion.toLowerCase().indexOf('safari')!=-1)?function() { + canvasX = window.innerWidth; + canvasY = window.innerHeight; +}:function() { + canvasX = document.documentElement.clientWidth||document.body.clientWidth||document.body.scrollWidth; + canvasY = document.documentElement.clientHeight||document.body.clientHeight||document.body.scrollHeight; +} + +window.onresize = getWindowCoords; + +soundManager.flashVersion = 9; +soundManager.url = '../../swf/'; +soundManager.useHighPerformance = true; +soundManager.debugMode = false; // disable debug mode +soundManager.defaultOptions.multiShot = true; + +soundManager.onload = function() { + // soundManager is ready to use (create sounds and so on) + init(); +} diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/bg-land.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/bg-land.png new file mode 100755 index 0000000..e87b2d7 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/bg-land.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/bg-sky.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/bg-sky.png new file mode 100755 index 0000000..f05abde Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/bg-sky.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/cursor-10.cur b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/cursor-10.cur new file mode 100755 index 0000000..1f78e9e Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/cursor-10.cur differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/cursor-11.cur b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/cursor-11.cur new file mode 100755 index 0000000..c559d34 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/cursor-11.cur differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/cursor-3.cur b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/cursor-3.cur new file mode 100755 index 0000000..5864f78 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/cursor-3.cur differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/cursor-4.cur b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/cursor-4.cur new file mode 100755 index 0000000..668fba6 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/cursor-4.cur differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/cursor-5.cur b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/cursor-5.cur new file mode 100755 index 0000000..54de2c9 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/cursor-5.cur differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/cursor-6.cur b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/cursor-6.cur new file mode 100755 index 0000000..d6c536f Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/cursor-6.cur differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/cursor-7.cur b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/cursor-7.cur new file mode 100755 index 0000000..779af62 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/cursor-7.cur differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/cursor-8.cur b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/cursor-8.cur new file mode 100755 index 0000000..07c406e Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/cursor-8.cur differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/cursor-9.cur b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/cursor-9.cur new file mode 100755 index 0000000..98bf364 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/cursor-9.cur differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/cursor-shadow.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/cursor-shadow.png new file mode 100755 index 0000000..f200f35 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/cursor-shadow.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/dot.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/dot.png new file mode 100755 index 0000000..8d5592b Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/dot.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/index.html b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/index.html new file mode 100755 index 0000000..1d2201c --- /dev/null +++ b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2a/index.html @@ -0,0 +1,360 @@ + + +SoundManager Demo + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+ + +
+ +
+

SoundManager 2: JS/DOM + Sound Demo

+

Heavy DOM manipulation + Javascript Sound (see code for experimental ideas)

+
+ +

Click and drag to draw.. Noisily.

+
+ +
+ + + diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2b/audio/bonk.mp3 b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2b/audio/bonk.mp3 new file mode 100755 index 0000000..2bce046 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2b/audio/bonk.mp3 differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2b/audio/fingerplop.mp3 b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2b/audio/fingerplop.mp3 new file mode 100755 index 0000000..663155e Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2b/audio/fingerplop.mp3 differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2b/audio/fingerplop2.mp3 b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2b/audio/fingerplop2.mp3 new file mode 100755 index 0000000..10f8bb2 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2b/audio/fingerplop2.mp3 differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2b/css/animation.css b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2b/css/animation.css new file mode 100755 index 0000000..2764bc2 --- /dev/null +++ b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2b/css/animation.css @@ -0,0 +1,36 @@ +body { + font-size:75%; + background:#667788; + color:#fff; + text-shadow:0 0 0 #fff; /* Safari nonsense */ +} + +h1, h2, h3 { + font:normal 3em "Helvetica Neue",georgia,"times new roman","Arial Rounded MT Bold",helvetica,verdana,tahoma,arial,"sans serif"; + font-weight:normal; + margin-bottom:0px; +} + + +h1 { + margin-top:0px; +} + +h1, h2 { + letter-spacing:-1px; /* zomg web x.0! ;) */ +} + +h2 { + font-size:2em; + margin-top:0.25em; +} + +p { + font:normal 1em verdana,tahoma,arial,"sans serif"; +} + +.point { + position:absolute; + width:32px; + height:32px; +} \ No newline at end of file diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2b/image/ball.gif b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2b/image/ball.gif new file mode 100755 index 0000000..0f13534 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2b/image/ball.gif differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2b/image/point.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2b/image/point.png new file mode 100755 index 0000000..043a88f Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2b/image/point.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2b/index.html b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2b/index.html new file mode 100755 index 0000000..e51dcf5 --- /dev/null +++ b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2b/index.html @@ -0,0 +1,21 @@ + + + + + + + + + +
+ +

SoundManager 2 demo: A Noisy Page

+

Example of sound tied to javascript/DOM event handlers

+ +

Click and drag for fun.

+ +
+ + + diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2b/script/animation.js b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2b/script/animation.js new file mode 100755 index 0000000..61d2382 --- /dev/null +++ b/docs/dymaxion/soundmanagerv297a-20101010/demo/animation-2b/script/animation.js @@ -0,0 +1,94 @@ +soundManager.flashVersion = 9; +soundManager.url = '../../swf/'; +soundManager.useHighPerformance = true; +soundManager.wmode = 'transparent'; +soundManager.debugMode = false; + +var points = []; +var o = null; +var lastX = 0; +var lastY = 0; +var threshhold = 4; +var threshMax = 32; +var noise = null; +var screenX = 0; + +function doPaint(e) { + var x = (e||event).clientX; + var y = (e||event).clientY; + var diff = Math.max(Math.abs(x-lastX),Math.abs(y-lastY)); + if (diff>threshhold) { + lastX = x; + lastY = y; + points.push(new Point(x,y,Math.min(diff/(32),3))); + } + return false; +} + +function stopPaint() { + document.onmousemove = null; + document.onmouseup = null; + // soundManager.play('up'); +} + +function startPaint(e) { + // soundManager.play('down'); + document.onmousemove = doPaint; + document.onmouseup = stopPaint; + lastX = (e||event).clientX; + lastY = (e||event).clientY; + screenX = (window.innerWidth?window.innerWidth:document.documentElement.clientWidth||document.body.clientWidth); + e?e.stopPropagation():event.returnValue = false; + return false; +} + +function initPoints() { + o = document.createElement('img'); + o.src = 'image/point.png'; + o.className = 'point'; + document.onmousedown = startPaint; + document.onmouseup = stopPaint; +} + +function Point(x,y,scale) { + var self = this; + this.data = { + x: x, + y: y, + scale: scale, + scalePX: parseInt(32*scale) + } + this.o = o.cloneNode(false); + this.o.style.left = (x-(this.data.scalePX/2))+'px'; + this.o.style.top = (y-(this.data.scalePX/2))+'px'; + this.o.style.width = this.o.style.height = this.data.scalePX+'px'; + var screenX2 = parseInt(screenX/2); + noise.play({volume:parseInt(Math.min(1,scale/3)*100),pan:(x + + +SoundManager 2: Animation + Sound Demos + + + + + +
+ +

Javascript Animation + Sound Demos using SoundManager 2

+ +
    +
  1. Interval-based animation (with sound)
  2. +
  3. Smashable Christmas Lights
  4. +
  5. JS-DOM "painting" + Sound, V1
  6. +
  7. JS-DOM "painting" + Sound, V2
  8. +
+ +

External demo: A Noisy DOM - part of a Yahoo! User Interface blog post, Enhancing YUI-based Apps with Audio.

+ + + +
diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/api/index.html b/docs/dymaxion/soundmanagerv297a-20101010/demo/api/index.html new file mode 100755 index 0000000..8ccd5b9 --- /dev/null +++ b/docs/dymaxion/soundmanagerv297a-20101010/demo/api/index.html @@ -0,0 +1,676 @@ + + + +SoundManager 2: Basic API Demo, Examples + + + + + + + + + + + + + + + + +
+ +

SoundManager 2 / API Demo and Code Examples

+ +

You can run the API demos with HTML5 enabled, Flash 8 (API default), Flash 9 (normal) or Flash 9 + highPerformance + fastPolling modes (higher JS callback frequency).

+ +

Wondering where to start? This page has inline executable code examples using the SoundManager 2 API.

+ +

If you're wondering "How to include SM2 in my page?", the basic template will get you started.

+ +
+ +
+ +

The basics (old-skool style): onload() + onerror()

+ +

Once you have SM2 included in your page, you merely need to hook into its onload()/onerror() events:

+ +
soundManager.onload = function() {
+  // soundManager is ready to use.
+  // createSound() / play() etc. can now be called
+}
+soundManager.onerror = function() {
+  // Oh no! No sound support.
+  // Maybe configure your app to ignore sound calls.
+  // (SM2 calls will silently return false after this point.)
+}
+
+ +

The modern method: Adding "onready" listeners

+ +

You can register listeners by passing a function to onready(), and it will be called when SoundManager has finished starting up:

+ +
soundManager.onready(function() {
+  if (soundManager.supported()) {
+    // createSound() / play() etc. can now be called
+  } else {
+    // uh-oh, SM2 failed to start - error, unsupported etc.
+  }
+});
+
+ +

An optional status object is actually passed to your onready() listener, which you can use instead of checking soundManager.supported():

+ +
soundManager.onready(function(oStatus) {
+  // oStatus: object containing "success" parameter
+  if (oStatus.success) {
+    // createSound() / play() etc. can now be called
+  } else {
+    // uh-oh, SM2 failed to start - error, unsupported etc.
+  }
+});
+
+ +

SoundManager first processes the onready queue in the order items were added, and then fires soundManager.onload() or onerror(). If you call onready() after SM2 has loaded, your callback will be fired immediately.

+ +

A note about initialization

+ +

Keep in mind SoundManager's core methods (createSound, etc.) will not be available until soundManager.onload() fires. The initialization time for SM2 can vary across browsers/platforms, and should effectively be assumed to be "asynchronous." Because of this, it is recommended you write your code to handle soundManager.onload() being called either before or after window.onload().

+

If you wish to have SM2 always wait for window.onload() before calling soundManager.onload()/onerror(), you can apply the following:

+
soundManager.waitForWindowLoad = true;
+ +

Debug Output, disabling and minified versions

+

SoundManager 2 has debug mode enabled by default and will write to agents supporting console.log-style debugging, and/or a custom <div> element in the absence of a console.

+

To disable debug output, set soundManager.debugMode = false;

+

Alternately, you may use the no-debug, minified version of the SM2 javascript library (which has internal debug code removed, and will silently return false.)

+ +

Demo 1a: Create + play (simple method)

+
soundManager.play('mySound0','../mpc/audio/AMB_SN_5.mp3');
+ +

Creates and plays a sound with ID "mySound0", at the specified URL. The sound can then be referenced by that ID later, eg. soundManager.play('mySound0');

+

Note that this method is only provided for convenience, and allows only ID and URL as parameters. If you want to specify other options (volume, loop, event handlers), you must use the object literal syntax as given below.

+ +

Demo 1b: Create + play (better method)

+ +
soundManager.createSound({
+ id:'mySound1',
+ url:'../mpc/audio/CHINA_1.mp3'
+});
+soundManager.play('mySound1');
+ +

Creates, then plays a sound. This object literal method allows for other parameters to be used (see demo 2)

+ +

Variant: Use object returned from createSound() (best method)

+ +
var aSoundObject = soundManager.createSound({
+ id:'mySound2',
+ url:'../mpc/audio/CHINA_1.mp3'
+});
+aSoundObject.play();
+ +

Creates, then plays a sound. This object literal method allows for other parameters to be used (see demo 2)

+ +

Demo 2: Create with onfinish event handler + play with volume argument

+
var demo2Sound = soundManager.createSound({
+ id:'mySound4',
+ url:'../mpc/audio/CHINA_1.mp3',
+ onfinish:function() {
+   soundManager._writeDebug(this.sID+' finished playing');
+ }
+});
+demo2Sound.play({volume:50});
+
+ +

(creates, then plays a new sound - a function is called when the sound finishes playing)

+ +

Demo 3: Play a pre-existing sound

+
soundManager.play('aDrumSound');
+ +

This plays an existing sound which was created by soundManager.onload() (for reference, view source of this page.)

+ +

Demo 4a: Play a sequence of sounds via "onfinish", with multiShot*

+
soundManager.play('aDrumSound',{multiShotEvents:true,onfinish:function(){soundManager.play('aCymbalSound');}})
+

Differently formatted:

+
soundManager.play('aDrumSound',{
+  multiShotEvents: true, // allow onfinish() to fire for each "shot" (default: only fire onfinish() for last shot.)
+  onfinish:function() {
+    soundManager.play('aCymbalSound');
+  }
+});
+ +

This will play an existing sound (created in-page), and uses the "onfinish" handler to make a call to play a second, pre-existing sound.

+

Also note that the button can be clicked multiple times, and the sound will be "layered" as multiShot is enabled for both of these sounds when using Flash 9. An onfinish event will also fire as each sound finishes.

+

Bug/behaviour note: Whenever "play" is called on a SMSound object, any parameters passed in will apply to all currently-playing instances of the sound if multiShot is allowed. For example, the onfinish handler from demo 4a will apply to demo 3 if 4a is started while 3 is still playing.

+

* Multishot is Flash 9+ only.

+ +

Demo 4b: Create and play a sequence of new sounds via "onfinish"

+
soundManager.createSound({
+ id:'aBassDrum',
+ url:'../mpc/audio/AMB_BD_1.mp3',
+ multiShot:false,
+ onfinish:function() {
+   soundManager.play('aRimSound','AMB_RIM1.mp3');
+ }
+});
+soundManager.play('aRimSound');
+ +

This will crate and play a new sound, using the "onfinish" handler to create and play a second, new sound.

+

It is recommended to create sound objects first, to simplify troubleshooting.

+ +

Demo 4c: Looping a sound (conventional, onfinish()-based)

+
var s = soundManager.createSound({
+  id:'hhCymbal',
+  url:'../mpc/audio/AMB_HHOP.mp3'
+});
+
+s.play({
+  onfinish: function() {
+    this.play();
+    // or, soundManager.play('hhCymbal');
+  }
+});
+
+ + | +

Note that there are issues with seamlessly-looping sounds, it is "close, but not perfect" with Flash 8/9 at this point.

+ +

Demo 4d: Looping a sound ("loops" parameter method)

+
var s = soundManager.createSound({
+  id:'hhCymbal',
+  url:'../mpc/audio/AMB_HHOP.mp3'
+});
+
+s.play({
+  loops: 3
+});
+
+ + | +

Looping is possible as shown above using Flash 9. With flash 8, the sound must be preloaded before looping can begin - eg. autoLoad: true, onload: function() { this.play{loops:3} }. For tighter looping, see See Seamless Looping MP3 in Flash for further details.

+ + +

Demo 4e: Sound timing notifications using onposition()

+
var s = soundManager.getSoundById('aCymbalSound'); // existing sound object
+
+// register some listeners (only do this once, they will work for subsequent plays)
+
+if (typeof addedListeners === 'undefined') {
+  addedListeners = true;
+
+  s.onposition(500, function(eventPosition) { // fire at 0.5 seconds
+    soundManager._writeDebug('Sound '+this.sID+' has reached position '+eventPosition);
+  });
+
+  s.onposition(1000, function(eventPosition) {// fire at 1 second
+    soundManager._writeDebug('Sound '+this.sID+' has reached position '+eventPosition);
+  });
+}
+
+s.play({
+  whileplaying:function() {
+    // demo only: show sound position while playing, for context
+    soundManager._writeDebug('position = ' + this.position);
+  }
+});
+
+ + +

onposition() allows you to add an event listener for a given time (in miliseconds, watching the position property); the event fires when that time has been reached while a sound is playing.

+

Note that for multiShot cases, the listeners will only fire for the original (first) shot because its position is the only one that is tracked within Flash.

+ +

Demo 5a: Set sound parameters, then play

+
var sound = soundManager.getSoundById('chinaCymbal'); // predefined/preloaded sound
+sound.setPosition(500); // 500 msec into sound
+sound.setPan(-75);      // 75% left pan
+sound.play();
+
+ | +

This will set the position of an existing, pre-loaded sound, then play it.

+ +

Variant: play()

+
var sound = soundManager.getSoundById('chinaCymbal');
+sound.play({position:500,pan:-75});
+
+ | +

Note that if planning to layer sounds with multiShot (Flash 9 only), this variant method will give best results as each new "channel" is started with parameters.

+ +

Demo 5b: Global sound muting

+

If not passed a sound ID, soundManager.mute() will mute all existing and newly-created sounds. soundManager.unmute() can also be passed a sound ID, and performs the inverse either on a single sound or all sounds.

+

In this demo, all sounds are globally muted and unmuted a few times. Different parameters are used to help audibly separate the sounds.

+
soundManager.mute(); // mute all sounds
+
+soundManager.createSound({
+ id: '880hz',
+ url: '../_mp3/880hz.mp3',
+ autoLoad:true,
+ onload: function() {
+   // soundManager.mute(); // mute all sounds
+   // play (muted) cymbal sound..
+   this.play({
+     volume:75, // volume for when un-muted
+     pan:-75,   // mostly on left channel 
+     // .. and clean-up afterwards
+     onfinish:function() {
+       this.destruct();
+     }
+   });
+
+   this.setVolume(25); // new volume for when un-muted..
+
+   soundManager.play('s440hz',{
+     pan:75,
+     onfinish:function() {
+       document.getElementById('btn-d5b').disabled = false;
+     }
+   });
+
+   // once playing, toggle all sounds some more
+   setTimeout(soundManager.unmute,500);
+   setTimeout(soundManager.mute,1000);
+   setTimeout(soundManager.unmute,1500);
+   setTimeout(soundManager.mute,2000);
+   setTimeout(soundManager.unmute,2500);
+ }
+});
+ + + +

Demo 5c: Per-object sound muting

+
soundManager.createSound({
+ id: '880hz',
+ url: '../_mp3/880hz.mp3',
+ autoLoad:true,
+ onload: function() {
+   soundManager.mute('880hz'); // mute this - alternately, this.mute() would work here
+   soundManager.play('s440hz',{ // play another sound to demo muting
+    onfinish: function() {
+      document.getElementById('btn-d5c').disabled = false;
+    }
+   });
+
+   // play 880hz (muted)..
+   this.play({
+     volume:75,
+     // .. and clean-up afterwards
+     onfinish:function() {
+       this.destruct();
+     }
+   });
+
+   this.setVolume(50); // still muted, however..
+
+   // mute/unmute china cymbal some more
+   // mute sound calls: soundManager.mute('880hz'), or soundManager.getSoundById('880hz').mute();
+   setTimeout(this.unmute,250);
+   setTimeout(this.mute,500);
+   setTimeout(this.unmute,750);
+   setTimeout(this.mute,1000);
+   setTimeout(this.unmute,1250);
+ }
+});
+ + + +

Demo 6: Create, play, unload and destroy a sound

+
var foo = soundManager.createSound({
+ id: 'fooSound',
+ url: '../mpc/audio/AMB_BD_1.mp3'
+});
+
+// soundManager.play('fooSound');
+
+// (Some time later on...)
+// soundManager.unload('fooSound'); - release the loaded MP3
+// soundManager.destroySound('fooSound'); - destroy the sound, freeing up memory etc. Also calls unload().
+
+// Alternate (demo) approach, call methods directly on sound object itself:
+foo.play({
+ onfinish:function() {
+   // once sound has loaded and played, unload and destroy it.
+   this.destruct(); // will also try to unload before destroying.
+ }
+});
+ + + +

Demo 7: Create, manually pre-load and finally play a sound

+
var preload = soundManager.createSound({
+ id: 'preloadSound',
+ url: '../mpc/audio/AMB_HHOP.mp3'
+});
+
+preload.load(); // load the sound ahead of time
+setTimeout(preload.play,1500); // and start playing it 1.5 seconds from now
+
+ + +

Demo 8: Create and play an invalid sound (404)

+
var bad = soundManager.createSound({
+  id:'badSound',
+  url:'badurl.mp3',
+  onload: function(bSuccess) {
+    soundManager._writeDebug('sound '+(bSuccess?'loaded!':'did NOT load.'));
+  }
+});
+bad.play();
+
+ + +

Demo 9: Create and destroy a sound at once (unusual crash testcase)

+
var s = soundManager.createSound({
+  id:'testcase',
+  url:'../mpc/audio/AMB_HHOP.mp3'
+});
+s.play();
+s.destruct();
+
+ + +

Demo 10: Sound timing (position accuracy testcase)

+

The Flash 9 version seems to resume the sound 1 msec earlier than it should, perhaps related to the timing/delay issue most noticeable on Windows.

+
var count = 0;
+var pos = -1;
+var s = soundManager.createSound({
+  id: 's',
+  url: '../mpc/audio/CHINA_1.mp3',
+  whileplaying: function() {
+    if (count == 0) {
+      if (this.position > 1000) {
+        this.pause();
+        pos = this.position;
+        count++;
+        this.resume();
+      }
+    } else if (count == 1) {
+      soundManager._writeDebug('old position: ' + pos);
+      soundManager._writeDebug('new position: ' + this.position);
+      // See that this.position is less than pos!
+      count++;
+    }
+  },
+  onfinish: function() {
+    this.destruct();
+  }
+});
+s.play();
+ + +

Demo 11: Inline whileplaying() event assignment

+

Note that when using the Flash 9 version of SM2 with Flash 9 and 10 plugins, flash/OS-related delay conditions may result in the position property being less than the duration property, even by the end of the sound.

+
var foo = soundManager.createSound({
+  id: 'bar',
+  url: '../mpc/audio/CRASH_1.mp3'
+});
+foo.options.whileplaying = function() {
+  soundManager._writeDebug('whileplaying(): '+this.position+' / '+this.duration);
+}
+foo.play();
+
+// note: assign .options before calling .play(), as that "bakes" the options into a play instance object.
+// the below "late" event handler assignment will have no effect on the already-playing instance.
+foo.options.onfinish = function() { soundManager._writeDebug(this.sID+' stopped.'); }
+
+ + +

Demo 12: 48 KHz MP3 sampling rate playback issue workaround

+

To work around a known "chipmunk" sampling rate issue with 48 KHz MP3s in Flash, one can apparently load a sound using Flash 9 with stream = false, and then call play() once the sound has fully-loaded. Exactly why this works is not known.

+
var fortyeight = soundManager.createSound({
+  id: 's-48khz',
+  url: 'http://freshly-ground.com/data/audio/48khz-test.mp3'
+});
+
+if (!fortyeight.loaded) {
+  // first time loading/playing
+  fortyeight.load({
+    stream: false,
+    onload: function() {
+      // sound has fully-loaded
+      this.play();
+    }
+  });
+} else {
+  // sound has already loaded
+  fortyeight.play();
+}
+
+ + +

Demo 13: onbeforefinish() testcase

+

This event fires when the sound's position property is equal to or less than onbeforefinishtime msec from the end of the sound, as defined by duration. If unspecified, a default value is used (eg. 5000 msec.)

+
var d13 = soundManager.createSound({
+  id: 'demo13',
+  url: '../mpc/audio/CRASH_1.mp3',
+  onbeforefinish: function() {
+    soundManager._writeDebug(this.sID+'.onbeforefinish(): '+this.position+' of '+this.duration);
+  },
+  onbeforefinishtime: 1000
+});
+d13.play();
+
+ + +

Demo 14: autoLoad:true + play() testcase

+

Bug testcase (Flash 8 version-specific): creating a sound with autoLoad:true and immediately calling play() does not work.

+
var autoLoadTest = soundManager.createSound({
+   id: 'autoLoadTest',
+   url: getRandomMP3URL(),
+   onload: function() {
+	soundManager._writeDebug(this.sID+' loaded.');
+   },
+   onplay: function() {
+     soundManager._writeDebug('Starting sound: '+this.sID);
+   },
+   autoPlay: false,
+   autoLoad: true,
+   stream: true
+  });
+  // autoLoadTest.play(); // sound will not start
+  setTimeout(autoLoadTest.play,1000); // may work with a delay?
+
+

Under Flash 8, this case does not work as expected. Even with the delay, the sound does not begin playing as soon as expected - sometimes it fires after the sound loads, in fact. For this reason, avoid using autoLoad:true if you intend to play the sound shortly after creating it when using Flash 8.

+ + +

Demo 15: autoPlay + onfinish() testcase

+

Bug testcase (Flash 8 version-specific): onfinish() does not fire with autoPlay:true

+
var sound = soundManager.createSound({
+ id: 'demo15',
+ url: '../mpc/audio/AMB_SN13.mp3',
+ onfinish: function() {
+  soundManager._writeDebug(this.sID+' finished (now destroying)');
+  // destroy this sound
+  this.destruct();
+ },
+ autoPlay: true,
+ multiShot: false
+});
+
+ + +

Demo 16: onstop() -> unload() testcase

+

Bug testcase: unload() from onstop() does not work

+
var sound16 = soundManager.createSound({
+ id: 'demo16',
+ url: getRandomMP3URL(),
+ onstop: function() {
+  soundManager.unload(this.sID);
+ },
+ onload: function() {
+   soundManager._writeDebug('loaded');
+ }
+});
+sound16.play();
+setTimeout(sound16.stop,1500);
+
+ + +

Demo 17: Buffering event handler/property example (Flash 9 only)

+

Reporting the isBuffering property of a SMSound object

+
if (soundManager.flashVersion != 8) {
+  var sound17 = soundManager.createSound({
+    id: 'demo17',
+    url: getRandomMP3URL(),
+    onbufferchange: function() {
+      soundManager._writeDebug('Buffering '+(this.isBuffering?'started':'stopped')+'.');
+    },
+    onload: function() {
+      soundManager._writeDebug(this.sID+' loaded.');
+    }
+  });
+  sound17.play();
+}
+
+ + + + + +
+ + + diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/christmaslights-home.js b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/christmaslights-home.js new file mode 100755 index 0000000..2ebc4fa --- /dev/null +++ b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/christmaslights-home.js @@ -0,0 +1,510 @@ +// Christmas Light Smashfest +// Adapted from XLSF 2007 as originally used on http://schillmania.com/?theme=2007&christmas=1 + +var Y = { + // shortcuts + A: YAHOO.util.Anim, + D: YAHOO.util.Dom, + E: YAHOO.util.Event, + UE: YAHOO.util.Easing, + CA: YAHOO.util.ColorAnim, + BG: YAHOO.util.BgPosAnim +} + +function XLSF(oTarget,urlBase,lightClass) { + var writeDebug = soundManager._wD; + writeDebug('XLSF()'); + var IS_MOON_COMPUTER = false; + var isIE = navigator.userAgent.match(/msie/i); + var self = this; + var xlsf = self; + var animDuration = 1; + this.oFrag = document.createDocumentFragment(); + this.oTarget = (oTarget?oTarget:document.documentElement); + this.oExplosionBox = document.createElement('div'); + this.oExplosionBox.className = 'xlsf-fragment-box'; + this.oExplosionFrag = document.createElement('div'); + this.oExplosionFrag.className = 'xlsf-fragment'; + this.lights = []; + this.lightClasses = { + pico: 32, + tiny: 50, + small: 64, + medium: 72, + large: 96 + } + this.urlBase = (typeof urlBase == 'undefined' || !urlBase?'demo/christmas-lights/':urlBase); + + if (window.innerWidth || window.innerHeight) { + var screenX = window.innerWidth; // -(!isIE?24:2); + var screenY = window.innerHeight; + } else { + var screenX = (document.documentElement.clientWidth||document.body.clientWidth||document.body.scrollWidth); // -(!isIE?8:0); + var screenY = (document.documentElement.clientHeight||document.body.clientHeight||document.body.scrollHeight); + } + + this.lightClass = (screenX>1280?'small':'pico'); // kind of light to show (32px to 96px square) + + if (typeof lightClass != 'undefined') { + // hack: override + this.lightClass = lightClass; + } + + if (window.location.href.match(/size=/i)) { + this.lightClass = window.location.href.substr(window.location.href.indexOf('size=')+5); + } + + this.lightXY = this.lightClasses[this.lightClass]; // shortcut to w/h + + this.lightGroups = { + left: [], + top: [], + right: [], + bottom: [] + } + this.lightSmashCounter = 0; + this.lightIndex = 0; + this.lightInterval = 250; + this.timer = null; + this.bgBaseX = 0; + this.bgBaseY = 0; + this.soundIDs = 0; + this.soundPan = { + panValue: 75, + left: 0, + mid: 481, + right: 962 + } + + this.cover = document.createElement('div'); + this.cover.className = 'xlsf-cover'; + document.documentElement.appendChild(this.cover); + + this.initSounds = function() { + for (var i=0; i<6; i++) { + soundManager.createSound({ + id: 'smash'+i, + url: xlsf.urlBase+'sound/glass'+i+'.mp3', + autoLoad: true, + multiShot: true, + volume:50 + }); + } + self.initSounds = function() {} // safety net + } + + this.appendLights = function() { + writeDebug('xlsf.appendLights()'); + self.oTarget.appendChild(self.oFrag); + self.oFrag = document.createDocumentFragment(); + } + + function ExplosionFragment(nType,sClass,x,y,vX,vY) { + var self = this; + this.o = xlsf.oExplosionFrag.cloneNode(true); + this.nType = nType; + this.sClass = sClass; + this.x = x; + this.y = y; + this.w = 50; + this.h = 50; + this.bgBaseX = 0; + this.bgBaseY = this.h*this.nType; + this.vX = vX*(1.5+Math.random()); + this.vY = vY*(1.5+Math.random()); + this.oA = null; + this.oA2 = null; + this.burstPhase = 3; // starting background offset point + this.burstPhases = 4; // 1+offset (ignore large size) + this.o.style.backgroundPosition = ((this.w*-this.burstPhase)+'px '+(this.h*-nType)+'px'); + + // boundary checks + if (self.sClass == 'left') { + this.vX = Math.abs(this.vX); + } else if (self.sClass == 'right') { + this.vX = Math.abs(this.vX)*-1; + } + + this.burstTween = function() { + // determine frame to show + var phase = 1+Math.floor((this.currentFrame/this.totalFrames)*self.burstPhases); + if (phase != self.burstPhase) { + self.burstPhase = phase; + self.o.style.backgroundPosition = ((self.w*-self.burstPhase)+'px '+(self.h*-nType)+'px'); + } + } + + this.burst = function() { + self.oA = new Y.A(self.o,{marginLeft:{to:(self.vX*8)},marginTop:{to:(self.vY*8)}},animDuration,Y.UE.easeOutStrong); + self.oA.onTween.subscribe(self.burstTween); + // self.oA.onComplete.subscribe(self.hide); + self.oA.animate(); + } + + this.hide = function() { + if (!isIE) self.o.style.opacity = 0; + } + + this.reset = function() { + self.o.style.left = '0px'; + self.o.style.top = '0px'; + self.o.style.marginLeft = '0px'; + self.o.style.marginTop = '0px'; + if (!isIE) self.o.style.opacity = 1; + } + + this.animate = function() { + self.reset(); + self.burst(); + } + + } + + function Explosion(nType,sClass,x,y) { + var oParent = this; + var self = this; + this.o = null; + this.nType = nType; + this.sClass = sClass; + this.x = x; + this.y = y; + this.boxVX = 0; + this.boxVY = 0; + this.o = xlsf.oExplosionBox.cloneNode(true); + this.o.style.left = x+'px'; + this.o.style.top = y+'px'; + // this.oFrag = document.createDocumentFragment(); + this.fragments = []; + + var mX = x; + var mY = y; + + this.fragments.push(new ExplosionFragment(nType,sClass,mX,mY,-5,-5)); + this.fragments.push(new ExplosionFragment(nType,sClass,mX,mY,0,-5)); + this.fragments.push(new ExplosionFragment(nType,sClass,mX,mY,5,-5)); + + this.fragments.push(new ExplosionFragment(nType,sClass,mX,mY,-5,0)); + this.fragments.push(new ExplosionFragment(nType,sClass,mX,mY,0,0)); + this.fragments.push(new ExplosionFragment(nType,sClass,mX,mY,5,0)); + + this.fragments.push(new ExplosionFragment(nType,sClass,mX,mY,5,-5)); + this.fragments.push(new ExplosionFragment(nType,sClass,mX,mY,5,0)); + this.fragments.push(new ExplosionFragment(nType,sClass,mX,mY,5,5)); + + this.init = function() { + for (var i=self.fragments.length; i--;) { + self.o.appendChild(self.fragments[i].o); + } + // xlsf.oTarget.appendChild(self.o); + // self.oFrag = document.createDocumentFragment(); + if (!IS_MOON_COMPUTER) { + // faster rendering, particles get cropped + xlsf.oFrag.appendChild(self.o); + } else { + // slower rendering, can overlay body + // _id('header').appendChild(self.o); + // (document.documentElement?document.documentElement:document.body).appendChild(o); + xlsf.oFrag.appendChild(self.o); + } + } + + this.reset = function() { + // clean-up + // self.o.parentNode.removeChild(self.o); + self.o.style.display = 'none'; + self.o.style.marginLeft = '0px'; + self.o.style.marginTop = '0px'; + self.o.style.left = self.x+'px'; + self.o.style.top = self.y+'px'; + if (!isIE) self.o.style.opacity = 1; + for (var i=self.fragments.length; i--;) { + self.fragments[i].reset(); + } + } + + this.trigger = function(boxVX,boxVY) { + self.o.style.display = 'block'; + self.boxVX = boxVX; + self.boxVY = boxVY; + // boundary checks + if (self.sClass == 'right') { + self.boxVX = Math.abs(self.boxVX)*-1; + } else if (self.sClass == 'left') { + self.boxVX = Math.abs(self.boxVX); + } + for (var i=self.fragments.length; i--;) { + self.fragments[i].animate(); + } + if (!isIE && (IS_MOON_COMPUTER)) { + var oAExplode = new Y.A(self.o,{marginLeft:{to:100*self.boxVX},marginTop:{to:150*self.boxVY},opacity:{to:0.01}},animDuration,Y.UE.easeInStrong); + } else { + // even IE 7 sucks w/alpha-transparent PNG + CSS opacity. Boo urns. + var oAExplode = new Y.A(self.o,{marginLeft:{to:100*self.boxVX},marginTop:{to:150*self.boxVY}},animDuration,Y.UE.easeInStrong); + } + oAExplode.onComplete.subscribe(self.reset); + oAExplode.animate(); + // setTimeout(self.reset,animDuration*1000*1.5); + } + + this.init(); + + // this.trigger(); // boooom! + + } + + function Light(sSizeClass,sClass,nType,x,y) { + var self = this; + this.o = document.createElement('div'); + this.sClass = sClass; + this.sSizeClass = sSizeClass; + this.nType = (nType||0); + this.useY = (sClass == 'left' || sClass == 'right'); + this.state = null; + this.broken = 0; + this.w = xlsf.lightClasses[sSizeClass]; + this.h = xlsf.lightClasses[sSizeClass]; + this.x = x; + this.y = y; + this.bg = xlsf.urlBase+'image/bulbs-'+this.w+'x'+this.h+'-'+this.sClass+'.png'; + this.o.style.width = this.w+'px'; + this.o.style.height = this.h+'px'; + this.o.style.background = 'url('+this.bg+') no-repeat 0px 0px'; + this.bgBaseX = (self.useY?-self.w*this.nType:0); + this.bgBaseY = (!self.useY?-self.h*this.nType:0); + this.glassType = parseInt(Math.random()*6); + this.oExplosion = null; + this.soundID = 'smash'+this.glassType; + var panValue = xlsf.soundPan.panValue; // eg. +/- 80% + this.pan = parseInt(this.x<=xlsf.soundPan.mid?-panValue+((this.x/xlsf.soundPan.mid)*panValue):(this.x-xlsf.soundPan.mid)/(xlsf.soundPan.right-xlsf.soundPan.mid)*panValue); + + this.initSound = function() { + } + + this.setBGPos = function(x,y) { + self.o.style.backgroundPosition = ((self.bgBaseX+x)+'px '+(self.bgBaseY+y)+'px'); + } + + this.setLight = function(bOn) { + if (self.broken || self.state == bOn) return false; + if (!self.w || !self.h) self.getDimensions(); + self.state = bOn; + if (self.useY) { + self.setBGPos(0,-this.h*(bOn?0:1)); + } else { + self.setBGPos(-this.w*(bOn?0:1),0); + } + } + + this.getDimensions = function() { + self.w = self.o.offsetWidth; + self.h = self.o.offsetHeight; + self.bgBaseX = (self.useY?-self.w*self.nType:0); + self.bgBaseY = (!self.useY?-self.h*self.nType:0); + } + + this.on = function() { + self.setLight(1); + } + + this.off = function() { + self.setLight(0); + } + + this.flickr = function() { + self.setLight(Math.random()>=0.5?1:0); + } + + this.toggle = function() { + self.setLight(!self.state?1:0); + } + + this.explode = function(e) { + // self.oExplosion = new Explosion(self.nType,self.sClass,self.x,self.y); + self.oExplosion.trigger(0,1); // boooom! + } + + this.smash = function(e) { + if (self.broken) return false; + self.broken = true; + if (soundManager && soundManager.supported()) { + soundManager.play(self.soundID,{pan:self.pan}); + // soundManager.sounds[self.soundID].play({pan:self.pan}); + // if (self.bonusSound != null) window.setTimeout(self.smashBonus,1000); + } + self.explode(e); + var rndFrame = 2; // +parseInt(Math.random()*3); + if (self.useY) { + self.setBGPos(0,self.h*-rndFrame); + } else { + self.setBGPos(self.w*-rndFrame,0); + } + xlsf.lightSmashCounter++; + } + + this.smashBonus = function() { + // soundManager.play(self.bonusSounds[self.bonusSound],urlBase+'sound/'+self.bonusSounds[self.bonusSound]+'.mp3'); + } + + this.reset = function() { + if (!self.broken) return false; + self.broken = false; + self.state = null; + xlsf.lightSmashCounter--; + self.flickr(); + } + + this.init = function() { + self.o.className = 'xlsf-light '+this.sizeClass+' '+this.sClass; + self.o.style.left = self.x+'px'; + self.o.style.top = self.y+'px'; + self.o.style.width = self.w+'px'; + self.o.style.height = self.h+'px'; + self.o.onmouseover = self.smash; + self.o.onclick = self.smash; + self.flickr(); + xlsf.oFrag.appendChild(self.o); + self.oExplosion = new Explosion(self.nType,self.sClass,self.x,self.y); + } + + this.init(); + + } // Light() + + this.createLight = function(sClass,nType,x,y) { + var oLight = new Light(self.lightClass,sClass,nType,x,y); + self.lightGroups[sClass].push(oLight); + self.lights.push(oLight); + return oLight; + } + + this.rotateLights = function() { + self.lights[self.lightIndex==self.lights.length?self.lights.length-1:self.lightIndex].off(); + self.lightIndex++; + if (self.lightIndex == self.lights.length) { + self.lightIndex = 0; + } + self.lights[self.lightIndex].on(); + } + + this.randomLights = function() { + self.lights[parseInt(Math.random()*self.lights.length)].toggle(); + } + + + this.destroyLights = function() { + self.startSequence(self.destroyLight,20); + } + + this.destroyLight = function() { + var groupSize = 2; // # to smash at a time + if (self.lightSmashCounter + var offset = parseInt(document.getElementsByTagName('h1')[0].offsetWidth)+16; + + var jMax = Math.floor((screenX-offset-16)/self.lightXY); + var iMax = Math.floor((screenY-offset-16)/self.lightXY); + + for (j=0; j=0.5?1:0); + } + + this.toggle = function() { + self.setLight(!self.state?1:0); + } + + this.explode = function(e) { + // self.oExplosion = new Explosion(self.nType,self.sClass,self.x,self.y); + self.oExplosion.trigger(0,1); // boooom! + } + + this.smash = function(e) { + if (self.broken) return false; + self.broken = true; + if (soundManager && soundManager.supported()) { + soundManager.play(self.soundID,{pan:self.pan}); + // soundManager.sounds[self.soundID].play({pan:self.pan}); + // if (self.bonusSound != null) window.setTimeout(self.smashBonus,1000); + } + self.explode(e); + var rndFrame = 2; // +parseInt(Math.random()*3); + if (self.useY) { + self.setBGPos(0,self.h*-rndFrame); + } else { + self.setBGPos(self.w*-rndFrame,0); + } + xlsf.lightSmashCounter++; + // xlsf.doNukeCheck(); + // window.setTimeout(self.reset,3000); // respawn + } + + this.smashBonus = function() { + // soundManager.play(self.bonusSounds[self.bonusSound],urlBase+'sound/'+self.bonusSounds[self.bonusSound]+'.mp3'); + } + + this.reset = function() { + if (!self.broken) return false; + self.broken = false; + self.state = null; + xlsf.lightSmashCounter--; + // self.oExplosion.reset(); // may not be necessary + self.flickr(); + } + + this.init = function() { + self.o.className = 'xlsf-light '+this.sizeClass+' '+this.sClass; + self.o.style.left = self.x+'px'; + self.o.style.top = self.y+'px'; + self.o.style.width = self.w+'px'; + self.o.style.height = self.h+'px'; + // self.o.onmouseover = self.toggle; + // self.o.onmouseout = self.toggle; + self.o.onmouseover = self.smash; + self.o.onclick = self.smash; + self.flickr(); + xlsf.oFrag.appendChild(self.o); + self.oExplosion = new Explosion(self.nType,self.sClass,self.x,self.y); + } + + this.init(); + + } // Light() + + this.createLight = function(sClass,nType,x,y) { + var oLight = new Light(self.lightClass,sClass,nType,x,y); + self.lightGroups[sClass].push(oLight); + self.lights.push(oLight); + return oLight; + } + + this.rotateLights = function() { + self.lights[self.lightIndex==self.lights.length?self.lights.length-1:self.lightIndex].off(); + self.lightIndex++; + if (self.lightIndex == self.lights.length) { + self.lightIndex = 0; + } + self.lights[self.lightIndex].on(); + } + + this.randomLights = function() { + self.lights[parseInt(Math.random()*self.lights.length)].toggle(); + } + + + this.destroyLights = function() { + self.startSequence(self.destroyLight,20); + } + + this.destroyLight = function() { + var groupSize = 2; // # to smash at a time + if (self.lightSmashCounter2) bsCounter = 0; // hack - loop through sounds + } +*/ + + this.appendLights(); + + // post-load/init case in the event this object is created late + // if (soundManager && soundManager._didInit && !soundManager._disabled) this.initSounds(); + + this.startSequence(self.randomLights); + + // setTimeout(this.destroyLights,10000); + // setTimeout(this.uberSmash,10000); + +} // --- XLSF2007() + +var xlsf = null; + +function smashInit() { + xlsf = new XLSF(document.getElementById('lights')); + xlsf.initSounds(); + document.getElementById('loading').style.display = 'none'; +} + +soundManager.url = '../../swf/'; +soundManager.flashVersion = 9; +soundManager.debugMode = false; + +soundManager.onload = function() { + setTimeout(smashInit,500); +} + +soundManager.onerror = function() { + setTimeout(smashInit,500); +} \ No newline at end of file diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bg-strip-dark.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bg-strip-dark.png new file mode 100755 index 0000000..80e07d9 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bg-strip-dark.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/blank.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/blank.png new file mode 100755 index 0000000..85af9fd Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/blank.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-32x32-bottom.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-32x32-bottom.png new file mode 100755 index 0000000..7246c01 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-32x32-bottom.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-32x32-left.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-32x32-left.png new file mode 100755 index 0000000..1cf077f Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-32x32-left.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-32x32-right.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-32x32-right.png new file mode 100755 index 0000000..8e68ec1 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-32x32-right.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-32x32-top.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-32x32-top.png new file mode 100755 index 0000000..0156c25 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-32x32-top.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-50x50-bottom.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-50x50-bottom.png new file mode 100755 index 0000000..79d3b07 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-50x50-bottom.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-50x50-fragments.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-50x50-fragments.png new file mode 100755 index 0000000..f963a89 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-50x50-fragments.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-50x50-left.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-50x50-left.png new file mode 100755 index 0000000..6aa0965 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-50x50-left.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-50x50-right.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-50x50-right.png new file mode 100755 index 0000000..c095739 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-50x50-right.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-50x50-top.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-50x50-top.png new file mode 100755 index 0000000..780fe75 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-50x50-top.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-50x50.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-50x50.png new file mode 100755 index 0000000..eb31135 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-50x50.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-64x64-bottom.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-64x64-bottom.png new file mode 100755 index 0000000..49341a1 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-64x64-bottom.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-64x64-left.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-64x64-left.png new file mode 100755 index 0000000..cb581e4 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-64x64-left.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-64x64-right.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-64x64-right.png new file mode 100755 index 0000000..fdd54ee Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-64x64-right.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-64x64-top.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-64x64-top.png new file mode 100755 index 0000000..09b098b Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-64x64-top.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-72x72-bottom.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-72x72-bottom.png new file mode 100755 index 0000000..4e5cae3 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-72x72-bottom.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-72x72-left.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-72x72-left.png new file mode 100755 index 0000000..c8bfa43 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-72x72-left.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-72x72-right.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-72x72-right.png new file mode 100755 index 0000000..20a614b Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-72x72-right.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-72x72-top.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-72x72-top.png new file mode 100755 index 0000000..76fd676 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-72x72-top.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-96x96-bottom.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-96x96-bottom.png new file mode 100755 index 0000000..3506236 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-96x96-bottom.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-96x96-left.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-96x96-left.png new file mode 100755 index 0000000..6f727e5 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-96x96-left.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-96x96-right.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-96x96-right.png new file mode 100755 index 0000000..f4456d6 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-96x96-right.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-96x96-top.png b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-96x96-top.png new file mode 100755 index 0000000..5c2ba64 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/image/bulbs-96x96-top.png differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/index.html b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/index.html new file mode 100755 index 0000000..ff9c6fe --- /dev/null +++ b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/index.html @@ -0,0 +1,33 @@ + + +Smashable Christmas Lights + + + + + + + + + +
+ +
+

Christmas Light Smashfest 2008: Prototype

+

Rendering...

+
+ +
+ +
+ +
+ pico | tiny | small | medium | large +
+ +
+ + + + + diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/sound/glass0.mp3 b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/sound/glass0.mp3 new file mode 100755 index 0000000..c161c69 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/sound/glass0.mp3 differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/sound/glass1.mp3 b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/sound/glass1.mp3 new file mode 100755 index 0000000..8d7d6b5 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/sound/glass1.mp3 differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/sound/glass2.mp3 b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/sound/glass2.mp3 new file mode 100755 index 0000000..ef5f556 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/sound/glass2.mp3 differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/sound/glass3.mp3 b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/sound/glass3.mp3 new file mode 100755 index 0000000..be7886e Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/sound/glass3.mp3 differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/sound/glass4.mp3 b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/sound/glass4.mp3 new file mode 100755 index 0000000..0f328f6 Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/sound/glass4.mp3 differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/sound/glass5.mp3 b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/sound/glass5.mp3 new file mode 100755 index 0000000..b54513e Binary files /dev/null and b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/sound/glass5.mp3 differ diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/yahoo-dom-event-animation-260.js b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/yahoo-dom-event-animation-260.js new file mode 100755 index 0000000..c38fd9f --- /dev/null +++ b/docs/dymaxion/soundmanagerv297a-20101010/demo/christmas-lights/yahoo-dom-event-animation-260.js @@ -0,0 +1,35 @@ +/* +Copyright (c) 2008, Yahoo! Inc. All rights reserved. +Code licensed under the BSD License: +http://developer.yahoo.net/yui/license.txt +version: 2.6.0 +*/ +if(typeof YAHOO=="undefined"||!YAHOO){var YAHOO={};}YAHOO.namespace=function(){var A=arguments,E=null,C,B,D;for(C=0;C0)?A.dump(D[F],I-1):L);}else{K.push(D[F]);}K.push(J);}if(K.length>1){K.pop();}K.push("]");}else{K.push("{");for(F in D){if(A.hasOwnProperty(D,F)){K.push(F+G);if(A.isObject(D[F])){K.push((I>0)?A.dump(D[F],I-1):L);}else{K.push(D[F]);}K.push(J);}}if(K.length>1){K.pop();}K.push("}");}return K.join("");},substitute:function(S,E,L){var I,H,G,O,P,R,N=[],F,J="dump",M=" ",D="{",Q="}";for(;;){I=S.lastIndexOf(D);if(I<0){break;}H=S.indexOf(Q,I);if(I+1>=H){break;}F=S.substring(I+1,H);O=F;R=null;G=O.indexOf(M);if(G>-1){R=O.substring(G+1);O=O.substring(0,G);}P=E[O];if(L){P=L(O,P,R);}if(A.isObject(P)){if(A.isArray(P)){P=A.dump(P,parseInt(R,10));}else{R=R||"";var K=R.indexOf(J);if(K>-1){R=R.substring(4);}if(P.toString===Object.prototype.toString||K>-1){P=A.dump(P,parseInt(R,10));}else{P=P.toString();}}}else{if(!A.isString(P)&&!A.isNumber(P)){P="~-"+N.length+"-~";N[N.length]=F;}}S=S.substring(0,I)+P+S.substring(H+1);}for(I=N.length-1;I>=0;I=I-1){S=S.replace(new RegExp("~-"+I+"-~"),"{"+N[I]+"}","g");}return S;},trim:function(D){try{return D.replace(/^\s+|\s+$/g,"");}catch(E){return D;}},merge:function(){var G={},E=arguments;for(var F=0,D=E.length;F=this.left&&A.right<=this.right&&A.top>=this.top&&A.bottom<=this.bottom);};YAHOO.util.Region.prototype.getArea=function(){return((this.bottom-this.top)*(this.right-this.left));};YAHOO.util.Region.prototype.intersect=function(E){var C=Math.max(this.top,E.top);var D=Math.min(this.right,E.right);var A=Math.min(this.bottom,E.bottom);var B=Math.max(this.left,E.left);if(A>=C&&D>=B){return new YAHOO.util.Region(C,D,A,B);}else{return null;}};YAHOO.util.Region.prototype.union=function(E){var C=Math.min(this.top,E.top);var D=Math.max(this.right,E.right);var A=Math.max(this.bottom,E.bottom);var B=Math.min(this.left,E.left);return new YAHOO.util.Region(C,D,A,B);};YAHOO.util.Region.prototype.toString=function(){return("Region {"+"top: "+this.top+", right: "+this.right+", bottom: "+this.bottom+", left: "+this.left+"}");};YAHOO.util.Region.getRegion=function(D){var F=YAHOO.util.Dom.getXY(D);var C=F[1];var E=F[0]+D.offsetWidth;var A=F[1]+D.offsetHeight;var B=F[0];return new YAHOO.util.Region(C,E,A,B);};YAHOO.util.Point=function(A,B){if(YAHOO.lang.isArray(A)){B=A[1];A=A[0];}this.x=this.right=this.left=this[0]=A;this.y=this.top=this.bottom=this[1]=B;};YAHOO.util.Point.prototype=new YAHOO.util.Region();YAHOO.register("dom",YAHOO.util.Dom,{version:"2.6.0",build:"1321"});YAHOO.util.CustomEvent=function(D,B,C,A){this.type=D;this.scope=B||window;this.silent=C;this.signature=A||YAHOO.util.CustomEvent.LIST;this.subscribers=[];if(!this.silent){}var E="_YUICEOnSubscribe";if(D!==E){this.subscribeEvent=new YAHOO.util.CustomEvent(E,this,true);}this.lastError=null;};YAHOO.util.CustomEvent.LIST=0;YAHOO.util.CustomEvent.FLAT=1;YAHOO.util.CustomEvent.prototype={subscribe:function(B,C,A){if(!B){throw new Error("Invalid callback for subscriber to '"+this.type+"'");}if(this.subscribeEvent){this.subscribeEvent.fire(B,C,A);}this.subscribers.push(new YAHOO.util.Subscriber(B,C,A));},unsubscribe:function(D,F){if(!D){return this.unsubscribeAll();}var E=false;for(var B=0,A=this.subscribers.length;B0){B=I[0];}try{G=M.fn.call(L,B,M.obj);}catch(F){this.lastError=F;if(A){throw F;}}}else{try{G=M.fn.call(L,this.type,I,M.obj);}catch(H){this.lastError=H;if(A){throw H;}}}if(false===G){if(!this.silent){}break;}}}return(G!==false);},unsubscribeAll:function(){for(var A=this.subscribers.length-1;A>-1;A--){this._delete(A);}this.subscribers=[];return A;},_delete:function(A){var B=this.subscribers[A];if(B){delete B.fn;delete B.obj;}this.subscribers.splice(A,1);},toString:function(){return"CustomEvent: "+"'"+this.type+"', "+"scope: "+this.scope;}};YAHOO.util.Subscriber=function(B,C,A){this.fn=B;this.obj=YAHOO.lang.isUndefined(C)?null:C;this.override=A;};YAHOO.util.Subscriber.prototype.getScope=function(A){if(this.override){if(this.override===true){return this.obj;}else{return this.override;}}return A;};YAHOO.util.Subscriber.prototype.contains=function(A,B){if(B){return(this.fn==A&&this.obj==B);}else{return(this.fn==A);}};YAHOO.util.Subscriber.prototype.toString=function(){return"Subscriber { obj: "+this.obj+", override: "+(this.override||"no")+" }";};if(!YAHOO.util.Event){YAHOO.util.Event=function(){var H=false;var I=[];var J=[];var G=[];var E=[];var C=0;var F=[];var B=[];var A=0;var D={63232:38,63233:40,63234:37,63235:39,63276:33,63277:34,25:9};var K=YAHOO.env.ua.ie?"focusin":"focus";var L=YAHOO.env.ua.ie?"focusout":"blur";return{POLL_RETRYS:2000,POLL_INTERVAL:20,EL:0,TYPE:1,FN:2,WFN:3,UNLOAD_OBJ:3,ADJ_SCOPE:4,OBJ:5,OVERRIDE:6,CAPTURE:7,lastError:null,isSafari:YAHOO.env.ua.webkit,webkit:YAHOO.env.ua.webkit,isIE:YAHOO.env.ua.ie,_interval:null,_dri:null,DOMReady:false,throwErrors:false,startInterval:function(){if(!this._interval){var M=this;var N=function(){M._tryPreloadAttach();};this._interval=setInterval(N,this.POLL_INTERVAL);}},onAvailable:function(R,O,S,Q,P){var M=(YAHOO.lang.isString(R))?[R]:R;for(var N=0;N-1;Q--){W=(this._removeListener(N[Q],M,V,Y)&&W);}return W;}}if(!V||!V.call){return this.purgeElement(N,false,M);}if("unload"==M){for(Q=J.length-1;Q>-1;Q--){X=J[Q];if(X&&X[0]==N&&X[1]==M&&X[2]==V){J.splice(Q,1);return true;}}return false;}var R=null;var S=arguments[4];if("undefined"===typeof S){S=this._getCacheIndex(N,M,V);}if(S>=0){R=I[S];}if(!N||!R){return false;}if(this.useLegacyEvent(N,M)){var P=this.getLegacyIndex(N,M);var O=E[P];if(O){for(Q=0,T=O.length;Q0&&F.length>0);}var R=[];var T=function(V,W){var U=V;if(W.override){if(W.override===true){U=W.obj;}else{U=W.override;}}W.fn.call(U,W.obj);};var N,M,Q,P,O=[];for(N=0,M=F.length;N-1;N--){Q=F[N];if(!Q||!Q.id){F.splice(N,1);}}this.startInterval();}else{clearInterval(this._interval);this._interval=null;}this.locked=false;},purgeElement:function(Q,R,T){var O=(YAHOO.lang.isString(Q))?this.getEl(Q):Q;var S=this.getListeners(O,T),P,M;if(S){for(P=S.length-1;P>-1;P--){var N=S[P];this._removeListener(O,N.type,N.fn,N.capture);}}if(R&&O&&O.childNodes){for(P=0,M=O.childNodes.length;P-1;O--){N=I[O];if(N){M._removeListener(N[M.EL],N[M.TYPE],N[M.FN],N[M.CAPTURE],O);}}N=null;}G=null;M._simpleRemove(window,"unload",M._unload);},_getScrollLeft:function(){return this._getScroll()[1];},_getScrollTop:function(){return this._getScroll()[0];},_getScroll:function(){var M=document.documentElement,N=document.body;if(M&&(M.scrollTop||M.scrollLeft)){return[M.scrollTop,M.scrollLeft];}else{if(N){return[N.scrollTop,N.scrollLeft];}else{return[0,0];}}},regCE:function(){},_simpleAdd:function(){if(window.addEventListener){return function(O,P,N,M){O.addEventListener(P,N,(M));};}else{if(window.attachEvent){return function(O,P,N,M){O.attachEvent("on"+P,N);};}else{return function(){};}}}(),_simpleRemove:function(){if(window.removeEventListener){return function(O,P,N,M){O.removeEventListener(P,N,(M));};}else{if(window.detachEvent){return function(N,O,M){N.detachEvent("on"+O,M);};}else{return function(){};}}}()};}();(function(){var EU=YAHOO.util.Event;EU.on=EU.addListener;EU.onFocus=EU.addFocusListener;EU.onBlur=EU.addBlurListener; +/* DOMReady: based on work by: Dean Edwards/John Resig/Matthias Miller */ +if(EU.isIE){YAHOO.util.Event.onDOMReady(YAHOO.util.Event._tryPreloadAttach,YAHOO.util.Event,true);var n=document.createElement("p");EU._dri=setInterval(function(){try{n.doScroll("left");clearInterval(EU._dri);EU._dri=null;EU._ready();n=null;}catch(ex){}},EU.POLL_INTERVAL);}else{if(EU.webkit&&EU.webkit<525){EU._dri=setInterval(function(){var rs=document.readyState;if("loaded"==rs||"complete"==rs){clearInterval(EU._dri);EU._dri=null;EU._ready();}},EU.POLL_INTERVAL);}else{EU._simpleAdd(document,"DOMContentLoaded",EU._ready);}}EU._simpleAdd(window,"load",EU._load);EU._simpleAdd(window,"unload",EU._unload);EU._tryPreloadAttach();})();}YAHOO.util.EventProvider=function(){};YAHOO.util.EventProvider.prototype={__yui_events:null,__yui_subscribers:null,subscribe:function(A,C,F,E){this.__yui_events=this.__yui_events||{}; +var D=this.__yui_events[A];if(D){D.subscribe(C,F,E);}else{this.__yui_subscribers=this.__yui_subscribers||{};var B=this.__yui_subscribers;if(!B[A]){B[A]=[];}B[A].push({fn:C,obj:F,override:E});}},unsubscribe:function(C,E,G){this.__yui_events=this.__yui_events||{};var A=this.__yui_events;if(C){var F=A[C];if(F){return F.unsubscribe(E,G);}}else{var B=true;for(var D in A){if(YAHOO.lang.hasOwnProperty(A,D)){B=B&&A[D].unsubscribe(E,G);}}return B;}return false;},unsubscribeAll:function(A){return this.unsubscribe(A);},createEvent:function(G,D){this.__yui_events=this.__yui_events||{};var A=D||{};var I=this.__yui_events;if(I[G]){}else{var H=A.scope||this;var E=(A.silent);var B=new YAHOO.util.CustomEvent(G,H,E,YAHOO.util.CustomEvent.FLAT);I[G]=B;if(A.onSubscribeCallback){B.subscribeEvent.subscribe(A.onSubscribeCallback);}this.__yui_subscribers=this.__yui_subscribers||{};var F=this.__yui_subscribers[G];if(F){for(var C=0;C0)?E:0;}B.Dom.setStyle(this.getEl(),C,E+D);},getAttribute:function(C){var E=this.getEl();var G=B.Dom.getStyle(E,C);if(G!=="auto"&&!this.patterns.offsetUnit.test(G)){return parseFloat(G);}var D=this.patterns.offsetAttribute.exec(C)||[];var H=!!(D[3]);var F=!!(D[2]);if(F||(B.Dom.getStyle(E,"position")=="absolute"&&H)){G=E["offset"+D[0].charAt(0).toUpperCase()+D[0].substr(1)];}else{G=0;}return G;},getDefaultUnit:function(C){if(this.patterns.defaultUnit.test(C)){return"px";}return"";},setRuntimeAttribute:function(D){var I;var E;var F=this.attributes;this.runtimeAttributes[D]={};var H=function(J){return(typeof J!=="undefined");};if(!H(F[D]["to"])&&!H(F[D]["by"])){return false;}I=(H(F[D]["from"]))?F[D]["from"]:this.getAttribute(D);if(H(F[D]["to"])){E=F[D]["to"];}else{if(H(F[D]["by"])){if(I.constructor==Array){E=[];for(var G=0,C=I.length;G0&&isFinite(K)){if(G.currentFrame+K>=J){K=J-(I+1);}G.currentFrame+=K;}};};YAHOO.util.Bezier=new function(){this.getPosition=function(E,D){var F=E.length;var C=[];for(var B=0;B0&&!(L[0] instanceof Array)){L=[L];}else{var K=[];for(M=0,O=L.length;M0){this.runtimeAttributes[P]=this.runtimeAttributes[P].concat(L);}this.runtimeAttributes[P][this.runtimeAttributes[P].length]=I;}else{F.setRuntimeAttribute.call(this,P);}};var B=function(G,I){var H=E.Dom.getXY(this.getEl());G=[G[0]-H[0]+I[0],G[1]-H[1]+I[1]];return G;};var D=function(G){return(typeof G!=="undefined");};E.Motion=A;})();(function(){var D=function(F,E,G,H){if(F){D.superclass.constructor.call(this,F,E,G,H);}};D.NAME="Scroll";var B=YAHOO.util;YAHOO.extend(D,B.ColorAnim);var C=D.superclass;var A=D.prototype;A.doMethod=function(E,H,F){var G=null;if(E=="scroll"){G=[this.method(this.currentFrame,H[0],F[0]-H[0],this.totalFrames),this.method(this.currentFrame,H[1],F[1]-H[1],this.totalFrames)];}else{G=C.doMethod.call(this,E,H,F);}return G;};A.getAttribute=function(E){var G=null;var F=this.getEl();if(E=="scroll"){G=[F.scrollLeft,F.scrollTop];}else{G=C.getAttribute.call(this,E);}return G;};A.setAttribute=function(E,H,G){var F=this.getEl();if(E=="scroll"){F.scrollLeft=H[0];F.scrollTop=H[1];}else{C.setAttribute.call(this,E,H,G);}};B.Scroll=D;})();YAHOO.register("animation",YAHOO.util.Anim,{version:"2.6.0",build:"1321"}); \ No newline at end of file diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/debug.css b/docs/dymaxion/soundmanagerv297a-20101010/demo/debug.css new file mode 100755 index 0000000..728fd4b --- /dev/null +++ b/docs/dymaxion/soundmanagerv297a-20101010/demo/debug.css @@ -0,0 +1,25 @@ +#soundmanager-debug { + position:fixed; + _position:absolute; /* IE <7 */ + bottom:1em; + right:1em; + width:38em; + height:30em; + overflow:auto; + padding:0px; + margin:1em; + font-family:monaco,"VT-100",terminal,"lucida console",courier,system; + opacity:0.9; + color:#333; + border:1px solid #ccddee; + -moz-border-radius:3px; + -khtml-border-radius:3px; + -webkit-border-radius:3px; + background:#f3f9ff; +} + +#soundmanager-debug div { + font-size:x-small; + padding:0.2em; + margin:0px; +} \ No newline at end of file diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/flashblock/basic.html b/docs/dymaxion/soundmanagerv297a-20101010/demo/flashblock/basic.html new file mode 100755 index 0000000..39b768b --- /dev/null +++ b/docs/dymaxion/soundmanagerv297a-20101010/demo/flashblock/basic.html @@ -0,0 +1,36 @@ + + + +SoundManager 2: Flash blocker handling - basic example + + + + + + + + + + + + +
+ +

SoundManager 2: Flashblock / "click to flash" handling: Basic Demo

+ +
+ +
+ +

See flashblock.css as a template for making your own SM2 + flash block implementations.

+ +
\ No newline at end of file diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/flashblock/flashblock.css b/docs/dymaxion/soundmanagerv297a-20101010/demo/flashblock/flashblock.css new file mode 100755 index 0000000..6733a08 --- /dev/null +++ b/docs/dymaxion/soundmanagerv297a-20101010/demo/flashblock/flashblock.css @@ -0,0 +1,99 @@ +/* + SoundManager 2 + useFlashBlock + Flash positioning and flashblock / clicktoflash handling +*/ + +#sm2-container { + /* + where the SM2 flash movie goes. by default, relative container. + set relative or absolute here, and don't touch it later or bad things will happen (see below comments.) + */ + position:relative; + width:1px; + height:1px; + _overflow:hidden; /* screw IE 6, just make it display nice */ +} + +#sm2-container object, +#sm2-container embed { + /* + the actual movie bit. + SWF needs to be able to be moved off-screen without display: or position: changes. important. + changing display: or position: or overflow: here or on parent can cause SFW reload or other weird issues after unblock, + eg. SM2 starts but strange errors, no whileplaying() etc. + */ + position:absolute; +} + +#sm2-container object, +#sm2-container embed, +#sm2-container.swf_timedout, +#sm2-container.swf_timedout object, +#sm2-container.swf_timedout embed { + /* + when SM2 didn't start normally, time-out case. flash blocked, missing SWF, no flash? + 48px square flash placeholder is typically used by blockers. + */ + left:auto; + top:auto; + width:48px; + height:48px; +} + +#sm2-container.swf_unblocked { + /* SWF unblocked, or was never blocked to begin with; try to collapse container as much as possible. */ + width:1px; + height:1px; +} + +#sm2-container.swf_unblocked object, +#sm2-container.swf_unblocked embed { + /* hide flash off-screen (relative to container) when it has loaded OK */ + left:-9999em; + top:-9999em; +} + +#sm2-container.swf_error { + /* when there is a fatal error (flash loaded, but SM2 failed) */ + display:none; +} + +#sm2-container.high_performance { + /* "high performance" case: keep on-screen at all times */ + position:absolute; + position:fixed; + _top:-9999px; /* IE 6 hax, no position:fixed */ + _left:-9999px; + bottom:0px; + left:0px; + /* + special case: show at first with w/h, hide when unblocked. + might be bad/annoying. + */ + width:48px; + height:48px; + z-index:99; /* try to stay on top */ +} + +#sm2-container.high_performance.swf_unblocked { + z-index:auto; +} + +#sm2-container.high_performance.swf_unblocked, +#sm2-container.high_performance.swf_unblocked object, +#sm2-container.high_performance.swf_unblocked embed { + /* 8x8px is required minimum to load in fx/win32 in some cases(?), 6x6+ good for fast performance, even better when on-screen via position:fixed */ + width:8px; + height:8px; +} + +#sm2-container.high_performance.swf_unblocked object, +#sm2-container.high_performance.swf_unblocked embed { + /* high-performance case must stay on-screen */ + left:auto; + top:auto; +} + +#sm2-container.high_performance.swf_timedout { + z-index:99; /* try to stay on top */ +} \ No newline at end of file diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/flashblock/index.html b/docs/dymaxion/soundmanagerv297a-20101010/demo/flashblock/index.html new file mode 100755 index 0000000..796308e --- /dev/null +++ b/docs/dymaxion/soundmanagerv297a-20101010/demo/flashblock/index.html @@ -0,0 +1,125 @@ + + + +SoundManager 2: Flash Block handling examples + + + + + + + + + + + + + + + + +
+ +

SoundManager 2: Flashblock / "click to flash" handling demos

+ +

Show SWF inline, wait indefinitely for load (click-to-run or whitelist)

+ +

You can run this demo with Flash 8 (default), Flash 9 (normal mode) or Flash 9 + highPerformance mode (higher JS callback frequency).

+ +

Where (and when) to show the SWF

+ +

To handle potential flash block cases, put <div id="sm2-container"></div> in your markup where you'd like the SWF to appear in those cases. If not specified, SM2 will create and append the #sm2-container node to the document when it starts.

+ +

When soundManager.useFlashBlock is true, SM2 will not apply styles (eg. style.position.left) directly to the flash; rather, it will assign CSS classes and you can handle it as you choose. Take a look at the related CSS file you will also need if you turn this feature on.

+ +

Handling failed start-up cases

+ +

In the blocked/failed start-up case, #sm2-container will have a class name of swf_timedout applied to it.

+ +

SM2 will start its init process, and will fire onready(), onload() and onerror() handlers accordingly. Keep in mind that while onerror() may fire at first, it may be preceded by a successful onload() if the user first loads the page and then later unblocks the flash movie.

+ +

Note that flash blockers may not run when viewing offline (via file://) content, so try viewing this demo online. For FlashBlock (under Firefox), you can also go to about:config using your address bar and change the value of flashblock.blockLocal to test while offline.

+ +

Flash Block Example

+ +

Here, Flash is appended by SM2 to the #sm2-container DIV and after a failed start attempt (if you have a blocker active), will have a swf_timedout class appended.

+ +

The SWF uses position:absolute and negative left/top values so as not to affect the normal page layout, but shifts to left:auto;top:auto (effectively left/top:0) in the blocked case, and becomes visible to the user. On a successful unblock, the movie goes back to left/top:-9999em and is hidden from view.

+ +

SoundManager 2 load status: Loading...

+ + + +
+ +
+ +

Flash Block-related CSS

+ +

When soundManager.useFlashBlock is enabled, CSS is applied to #sm2-container depending on the progress of SM2's start-up.

+

This page + demos use the rules below, fully-defined and commented in flashblock.css. Use it as a base for your own SM2 + flash block implementations.

+ +
#sm2-container {
+ /* Initial state: position:absolute/off-screen, or left/top:0 */
+}
+#sm2-container.swf_timedout {
+  /* Didn't load before time-out, show to user.
+  Maybe highlight on-screen, red border, etc..? */
+}
+#sm2-container.swf_unblocked {
+  /* Applied if movie loads successfully
+  (flash started, so move off-screen etc.) */
+}
+#sm2-container.swf_error {
+  /* "Fatal" error case: SWF loaded,
+  but SM2 was unable to start for some reason.
+  (Flash security or other error case.) */
+}
+#sm2-container.high_performance {
+  /* Additional modifier for "high performance" mode
+  should apply position:fixed and left/bottom 0 to stay on-screen
+  at all times (better flash performance) */
+}
+#sm2-container.flash_debug {
+  /* Additional modifier for flash debug output mode
+  should use width/height 100% so you can read debug messages */
+}
+ +

Basic Demo

+ +

For a more minimal example, see the basic flashblock demo.

+ +
diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/flashblock/method1/flashblock.css b/docs/dymaxion/soundmanagerv297a-20101010/demo/flashblock/method1/flashblock.css new file mode 100755 index 0000000..d8a9e69 --- /dev/null +++ b/docs/dymaxion/soundmanagerv297a-20101010/demo/flashblock/method1/flashblock.css @@ -0,0 +1,61 @@ +#sm2-container { + /* where the SM2 flash movie goes. */ + position:relative; +} + +#sm2-container, +#sm2-container embed, +#sm2-container.swf_timedout { + /* 48px square flash placeholder is typically used by blockers */ + width:48px; + height:48px; +} + +#sm2-container.swf_timedout { + /* likely a flash block situation. Maybe make it more bold, red, show descriptive nested elements? */ + border:1px solid red; +} + +#sm2-container object, +#sm2-container embed { + /* hide flash off-screen by default */ + position:absolute; + left:-9999em; + top:-9999em; +} + +#sm2-container.swf_timedout object, +#sm2-container.swf_timedout embed { + /* when blocked, make visible inside container */ + left:auto; + top:auto; +} + +#sm2-container object, +#sm2-container embed { + /* 6x6 is small enough to be "invisible" and not blocked by click2flash if allowed, also enough to be really fast/performant on-screen */ + width:48px; + height:48px; +} + +#sm2-container.swf_unblocked, +#sm2-container.swf_unblocked object, +#sm2-container.swf_unblocked embed { + width:6px; + height:6px; +} + +#sm2-container.high_performance { + position:absolute; + position:fixed; + _top:0px; /* IE 6 hax */ + bottom:0px; + left:0px; +} + +#sm2-container.high_performance object, +#sm2-container.high_performance embed { + position:absolute; + left:0px; + top:0px; +} \ No newline at end of file diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/flashblock/method1/flashblock.js b/docs/dymaxion/soundmanagerv297a-20101010/demo/flashblock/method1/flashblock.js new file mode 100755 index 0000000..f96cf46 --- /dev/null +++ b/docs/dymaxion/soundmanagerv297a-20101010/demo/flashblock/method1/flashblock.js @@ -0,0 +1,90 @@ +/* + + FlashBlock handler for SoundManager 2 + ------------------------------------------------------------------- + Attempt to handle and gracefully recover from flashblock conditions + Requires SoundManger v2.95a.20090717+ + + http://schillmania.com/projects/soundmanager2/ + +*/ +soundManager._flashBlock = new function() { + + var _s = this; + this.name = 'soundManager._flashblock'; + this.didTimeout = false; // did initial attempt fail? + this.timer = null; // for setTimeout call + + this.startTimer = function(nMsec) { + // soundManager._wD(_s.name+'_.starttimer()'); + _s.timer = window.setTimeout(_s.checkFlashStatus,nMsec); + }; + + this.stopTimer = function() { + // soundManager._wD(_s.name+'.stoptimer()'); + if (_s.timer) { + window.clearTimeout(_s.timer); + _s.timer = null; + } + }; + + this.checkFlashStatus = function() { + // soundManager._wD(_s.name+'.checkflashstatus()'); + var _sm = soundManager; + var oMC = _sm.oMC; // DIV (default: #sm2-container) for .SWF + var oStatus = document.getElementById('sm2-status'); // demo-only + + if (!_sm.supported()) { + // make the movie more visible, so user can fix + oMC.className = 'swf-timedout'; + _s.didTimeout = true; + var msg = 'No flash response, applying .swf-timedout CSS..'; + _sm._wD(_s.name+': '+msg); + if (oStatus) { + oStatus.innerHTML = ''+msg+''; + } + } else { + // SM2 loaded OK + // move the movie container to its proper place + oMC.className = 'swf-loaded'; + if (!_s.didTimeout) { + // SM2 didn't previously fail, no blocker active + var msg = 'SM2 loaded OK (before timeout), fast unblock or no blocker.'; + _sm._writeDebug(_s.name+'.checkFlashStatus: '+msg,1); + if (oStatus) { + oStatus.innerHTML = ''+msg+''; + } + } else { + var msg = 'SM2 recovered after block (or timeout), loaded OK.'; + _sm._wD(_s.name+': '+msg); + if (oStatus) { + oStatus.innerHTML = ''+msg+''; + } + } + // stop timer, if applicable + _s.stopTimer(); + return false; + } + }; + + soundManager.flashLoadTimeout = 0; // wait forever for flash to load - we'll set our own timeout via oninitmovie() + + soundManager.oninitmovie = function() { + // when SWF is written (or ready to start), wait and make SWF visible (time-out case) + soundManager._flashBlock.startTimer(750); + }; + + soundManager.onready(function(oStatus) { + // SM2 has now initialized, either no blocking OR blocked movie was allowed/whitelisted + var fb = soundManager._flashBlock; + if (oStatus.success) { + // Yay! recovered OK. + fb.checkFlashStatus(); + } else { + // Blocking was passed (or no blocking), but then something *else* went wrong. + } + // stop timer, if applicable + fb.stopTimer(); + }); + +}(); diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/flashblock/method1/index.html b/docs/dymaxion/soundmanagerv297a-20101010/demo/flashblock/method1/index.html new file mode 100755 index 0000000..c8acee7 --- /dev/null +++ b/docs/dymaxion/soundmanagerv297a-20101010/demo/flashblock/method1/index.html @@ -0,0 +1,79 @@ + + + +SoundManager 2: Flash blocker handling examples + + + + + + + + + + + + + + + + +
+ +

SoundManager 2: Flashblock / "click to flash" handling demos

+ +

Show SWF inline, wait indefinitely for load

+ +

You can run this demo with Flash 8 (default), Flash 9 (normal mode) or Flash 9 + highPerformance mode (higher JS callback frequency).

+ +

Typically SM2 appends a DIV and hides the SWF off-screen. To handle potential flash block cases, a flash container DIV with an ID of "sm2-container" is placed in the HTML. SM2 will find and append the flash movie to this element. In this case, the SWF can be targeted with CSS and is not positioned off-screen as it normally would be.

+

SM2 will start its init process, and will fire onready(), onload() and onerror() handlers accordingly. Keep in mind that while onerror() may fire at first, it may be preceded by a successful onload() if the user first loads the page and then later unblocks the flash movie.

+

Note that flash blockers may not run when viewing offline (via file://) content, so try viewing this demo online. For FlashBlock (under Firefox), you can also adjust flashblock.blockLocal under about:config in the address bar to test while offline.

+ +

CSS applied to #sm2-container, depending on state:

+
#sm2-container.movieContainer {/* Initial state: position:absolute/off-screen, or inline/relative */}
+#sm2-container.swf_timedout {/* Didn't load before time-out, show to user: On-screen, red border, etc..? */}
+#sm2-container.swf_unblocked {/* Applied if a timeout followed by an unblock (flash started.) Move off-screen. */}
+#sm2-container.high_performance {/* Additional modifier for "high performance" mode, should apply position:fixed and left/bottom 0 to stay on-screen at all times (better flash performance) */}
+#sm2-container.flash_debug {/* Additional modifier for flash debug output mode, should use width/height 100% so you can read debug messages */}
+#sm2-container.swf_error {/* Additional modifier, "something really broke" (fatal: security, missing SWF etc.) */}
+ +

SoundManager 2 load status: Loading...

+ +

Take a look at flashblock.css for implementation details.

+ +
+ +
+ +
diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/index.css b/docs/dymaxion/soundmanagerv297a-20101010/demo/index.css new file mode 100755 index 0000000..b2493a6 --- /dev/null +++ b/docs/dymaxion/soundmanagerv297a-20101010/demo/index.css @@ -0,0 +1,1715 @@ +body { + background:#fff; + margin:0px; + padding:0px; + font:75% "helvetica neue",helvetica,arial,verdana,tahoma,"sans serif"; +} + +h1, +h2.special { + letter-spacing:-0.025em; +} + +h1, h2, h3, h4 { + font-size:1em; + margin:0px; + padding:0px; + vertical-align:middle; +} + +h4.new, +h4.recent, +h4.flash9 { + min-height:24px; +} + +h1 { + font-size:2em; +} + +h2 { + font-family:helvetica,arial,verdana,tahoma,"sans serif"; + font-size:1.5em; +} + +h3 { + font-size:1.17em; + border-bottom:1px solid #ccc; + padding-bottom:0.25em; + margin-top:1.5em; +} + +h4 { + margin:1.5em 0px 0.5em 0px; + font-size:1.15em; +} + +h5 { + font-size:1em; + color:#666; +} + +.c2 h5 { + border-bottom:1px solid #ccc; + padding-bottom:0.25em; +} + +body.home h4 { + border-bottom: 1px solid #e9e9e9; + padding-bottom: 0.33em; + margin-bottom: 0.75em; +} + +em em { + /* special highlight */ + color:#003366; + background:#e9f3ff; + font-weight:bold; + margin-top:-0.3em; + padding:0.2em 0.25em; +} + +pre { + border-left:2px solid #f3f3f3; + padding-left:0.5em; +} + +dl pre { + border-color:#e9f3ff; + margin-left:-0.5em; +} + +dl.alt pre { + border-color:#f3f3f3; +} + +pre, +code, +pre code, +.code, +dt, +#soundmanager-debug { + font-family:monaco,"Andale Mono","VT-100","Lucida Console","Courier New",monospace,courier,system,sans-serif; +} + +pre, +code, +.code, +dt, +#soundmanager-debug { + font-size:11px; + font-weight:normal; + line-height:1.5em; + color:#006699; + background:#f6fcff; +} + +pre { + font-size:11px; /* x-small */ + line-height:1.75em; +} + +pre.specialcommentblock span span { + *line-height:1.75em; +} + +pre span span { + /* font-size:x-small; */ +} + +pre.small { + font-size:90%; +} + +p pre, +p.in pre { + font-size:0.97em; +} + +#soundmanager-debug { + background:#fff; + padding-left:0.75em; + border:2px solid #ddeeff; + font-size:11px; + line-height:1.7em; +} + +body.home #soundmanager-debug { + position:fixed; + _position:absolute; /* IE <7 */ + bottom:1em; + right:1em; + height:12em; + width:auto; + overflow:auto; + padding:0px; + margin:1em 6px 6px 1em; + opacity:0.95; + color:#333; + border:1px solid #ccddee; + -moz-border-radius:3px; + -khtml-border-radius:3px; + -webkit-border-radius:3px; + background:#f3f9ff; + z-index:10; + font-size:small; + line-height:1.2em; +} + +body.home #soundmanager-debug div { + padding-left:0.5em; +} + +#soundmanager-debug div { + margin:0px; + padding:0.25em 0px; + font-size:11px; + color:#333; +} + +#soundmanager-debug div.sm2-alt { + background-color:#fff; + color:#556677; +} + +#live-debug { + display:table; + *display:block; +} + +#live-debug #soundmanager-debug .sm2-alt { + background-color:#f3f9ff; + color:#336699; +} + +dd pre, +dd code { + background:transparent; +/* + font-size:1.15em; + *font-size:1em; +*/ +} + +pre code { + font-size:1em; +} + +pre { + white-space:-moz-pre-wrap; + white-space:pre-wrap; + word-wrap:break-word; /* IE */ +} + +pre span, +code span, +dt span { + color:#339933; +} + +pre span span, +code span span, +dt span span { + color:#667788; +} + +pre.block, +pre.block code, +div.block div.code { + position:relative; + display:table; + *display:block; + border:1px solid #ccc; + -moz-border-radius:3px; + -khtml-border-radius:3px; + -webkit-border-radius:3px; +} + +div.block, +pre.block { + background:#e9f3ff; + border-color:#eee; + padding:3px; +} + +pre.block code, +div.block div.code { + background:#fff; + border:1px solid #ccddee; + padding:0.5em; + font-size:11px; + line-height:1.75em; +} + +dl { + background:#f9fcff; + padding-bottom:1px; +} + +dd { + margin:1em 0px; + padding:0px 0.5em; + line-height:1.5em; +} + +dt { + margin:0px; + padding:0px; + margin:0.5em 0px 1em 0px; + border-bottom:1px solid #ddeeff; + padding:0.3em 0.3em 0.4em 0.3em; + padding-top:0.5em; + text-indent:0.25em; + background:#eef6ff; + font-size:1.15em; +} + +dt.alt { + background:#f3f3f3; + border-bottom-color:#e6e6e6; +} + +dl.alt { + background:#fcfcfc; + padding:0px 0px 1px 0px; +} + +h2 { + padding-top:0.5em; +} + +#top { + position:relative; + padding:1em 1em 0px 1em; + background:#222; + color:#fff; + z-index:1; +} + +#top, +#top div { + *zoom:1; +} + +#top h1 { + /* special christmas light case */ + display:inline; +} + +#top h2 { + /* tagline */ + font-size:1.25em; + font-weight:lighter; + padding-top:2px; + letter-spacing:-1px; +} + +#main { + position:relative; + padding:0px 0px 2em 0px; + padding-top:1px; + margin:0px auto; + max-width:110em; + *padding:0px 1em 2em 1em; + zoom:1; +} + +.columnar { + position:relative; + margin:0px; + padding:0px; + margin:2em 0.5em 0.5em 0.5em; +} + +.columnar .c1 { + position:absolute; + left:0px; + top:0px; + width:20em; + height:30px; + _position:relative; /* IE 6 hackery */ + _height:auto; +} + +#doc .columnar .c1 { + left:auto; + right:1em; + _right:auto; +} + +.columnar .c1 h2 { + position:relative; + font-size:1.2em; + padding:0.46em 0.5em; + vertical-align:middle; + background:#333; + color:#fff; +} + +.columnar .c1 p { + margin:0.5em 0px 1em 0px; + padding-left:0.5em; + padding-right:0.5em; + font-size:0.95em; + line-height:1.35em; + color:#666; +} + +.columnar .c1 p code { + font-size:xx-small; + color:#336699; +} + +.columnar .c2 { + position:relative; + margin-top:2.33em; + margin-top:1px; + border-top:0.25em solid #333; + margin-left:22em; + margin-bottom:1.5em; +} + +.triple .columnar .c2 { + margin-right:21.25em; + min-width:20em; +} + +#doc .triple .columnar .c2 { + margin-left:21.5em; + margin-right:23em; + _margin-right:0px; /* not you, IE 6. */ +} + +#doc .triple .columnar .c1 { + margin-right:0px; + margin-left:21.25em; +} + +.columnar .c2 p:first-child { + margin-top:0.2em; +} + +.columnar .c2 h3:first-child { + margin-top:0.2em; + padding-bottom:0.3em; +} + +.columnar .c2 > .f-block:first-child > h4 { + margin-top:0.5em; +} + +.columnar .c2 strong strong { + display:block; + padding:0.5em; + border-bottom:1px solid #999; + background:#f0f6ff; + color:#336699; +} + +.columnar .c2 p { + line-height:1.5em; +} + +.three .columnar { + position:relative; +} + +.three .columnar .c1 { + position:relative; + width:20em; +} + +.three .columnar .c2 { + position:relative; + margin-right:16em; +} + +.c3 { + position:absolute; + right:1em; + margin-right:16px; + top:2em; + width:16em; + margin-top:-0.5em; +} + +#doc .c3 { + right:auto; + margin-right:0px; + margin-left:16px; + left:1.25em; +} + +#nav { + position:relative; + margin-top:0.75em; + margin-left:-0.5em; +} + +ul { + line-height:1.5em; +} + +#nav ul { + margin:0px; + padding:0px; + line-height:1em; + list-style-type:none; +} + +#nav>ul { +/* + border-top:1px solid #333; +*/ +} + +#nav ul li { + position:relative; + margin:0px; + padding:0px; + float:left; + display:inline; + padding-right:1px; +} + +#nav ul li ul { + position:absolute; + z-index:1; + display:none; + min-width:17em; + max-width:20em; + background:#3399cc; + opacity:0.95; + _width:17em; + *opacity:1; + *top:1.5em; + *left:0px; +} + +#nav ul li:last-child ul { + right:1px; +} + + +#nav ul li:hover ul, +#nav ul li ul:hover { + display:block; +} + +#nav ul li ul li { + float:none; + display:block; + width:100%; +} + +#nav ul li ul li a { + display:block; + width:auto; + border:none; + padding:0.4em; + padding-left:1em; + color:#fff; +} + +#nav ul li a { + display:inline-block; + padding:0.3em 0.5em; + padding-left:0.75em; + padding-right:0.75em; + text-decoration:none; + font-weight:bold; + color:#ccc; +} + +#nav ul li strong a { + background:#336699; + background:#; + background:#fff; + color:#333; +} + +#nav ul li strong a:hover, +#nav ul li a:hover, +#nav ul>li:hover strong a, +#nav ul>li:hover>a { + background:#3399cc; + color:#fff; +} + +#nav ul li ul li a:hover { + background:#336699; +} + +#version { + position:relative; + float:right; + display:inline; + margin-left:1em; + font-size:x-small; + margin-bottom:0px; + margin-top:0.25em; + color:#999; +} + +div.clear { + clear:both; + font-size:1px; + line-height:1px; +} + +.note { + margin-top:0.5em; + font-size:0.95em; + color:#999; +} + +.note a { + color:#666; + padding:1px; + margin:-1px; +} + +.note a:hover { + color:#fff; + background:#666; +} + +ul.standard { + line-height:1.5em; + padding-left:1.2em; + *padding-left:0px; + color:#333; + margin-top:0.5em; + margin-bottom:0.5em; + list-style-type:square; +} + +ul.standard li { + margin-bottom:0.5em; +} + +ul.standard ul { + margin-top:0.5em; + margin-bottom:1em; + padding-left:1.2em; +} + +.c3 { + background:#fcfcfc; +} + +.c3 ul { + list-style-type:none; +} + +.c3 ul, +.c3 ul li { + margin:0px; + padding:0px; +} + +.c3 h2 { + font-size:1.1em; + text-indent:0.4em; +} + +.c3 ul li a { + text-decoration:none; + color:#000; +} + +.c3 ul li a:hover { + color:#000; + _color:#000; +} + +.c3 ul li a:focus { + color:#000; + outline:none; +} + +.c3 ul li.active a { + color:#fff; +} + +.c3 ul li.active a:hover { + _color:#fff; +} + +.c3 .box { + margin-top:6px; +} + +.wedge, +.c3 h2 { + position:relative; + background:#333; + color:#fff; + margin:0px; + padding:0px; + height:2.101em; + line-height:1.65em; +} + +.c3 h2 { + height:1.75em; + line-height:1.75em; +} + +.wedge { + background-color:#3399cc; +} + +.wedge-dark { + background:#333; +} + +.wedge .l, +.wedge .r { + border-top:1.75em solid #333; +} + +.c3 h2 .l, +.c3 h2 .r { + border-top:1.66em solid #333; +} + +.wedge .l, +.c3 h2 .l { + background:transparent url(../demo/_image/wedge.png) no-repeat -64px 0px; + position:absolute; + left:0px; + top:0px; + width:16px; + height:100%; + margin-left:-16px; + border-top:1.7em solid #333; +} + +.wedge .r, +.wedge-dark .r, +.c3 h2 .r { + background:transparent url(../demo/_image/wedge.png) no-repeat -48px 0px; + position:absolute; + right:0px; + top:0px; + width:16px; + height:100%; + margin-right:-16px; +} + +.wedge .l, +.wedge .r { + border-color:#3399cc; +} + +.wedge .l { + background-position:-64px -64px; +} + +.wedge .r { + margin-top:-16px; + border-top:none; + height:16px; + border-bottom:1.7em solid #3399cc; + background-position:0px -192px; +} + +.wedge-dark .l, +.wedge-dark .r { + border-color:#333; +} + +.wedge-dark .l { + background-position:-64px 0px; +} + +.wedge-dark .r { + background-position:0px -128px; +} + +.c3 h2 .r.up { + margin-top:-16px; + border-top:none; + height:16px; + border-bottom:1.66em solid #333; + background-position:0px -128px; +} + +.c3 h2 .l.flat, +.wedge .l.flat, +.c3 h2 .r.flat, +.wedge .r.flat { + background-image:none; +} + +.c3 ul { + margin:0px; + padding:0px; + margin-top:0.125em; + margin-bottom:0.25em; + list-style-type:none; +} + +.c3 ul li { + border:1px solid #f3f3f3; + border-top:none; + border-bottom:none; +} + +.c3 ul ul li { + border:none; +} + +.c3 ul li { + margin:0px; + padding:0px; +} + +.c3 ul li ul li { + font-family:monaco,"Andale Mono","VT-100","Lucida Console","Courier New",monospace,courier,system,sans-serif; + font-size:11px; + line-height:1.5em; + text-indent:0.5em; + padding:0.25em 0.25em 0.25em 0.25em; + cursor:hand; +/* + font-smooth:never; +*/ +} + +.c3 ul li ul li.alt { + background-color:#f8f8f8; +} + +.c3 ul li ul li:hover { + background-color:#ccddff; + cursor:pointer; + cursor:hand; +} + +.c3 ul li ul li.active { + background-color:#3399cc; + color:#fff; +} + +.c3 h3 { + margin:0px; + padding:0px; + background:#3399cc; + border:none; + color:#fff; + font-size:1.3em; + text-indent:0.5em; + font-size:1em; + height:1.67em; + padding:0.25em 0.5em; + padding:0px; + +} + +.c3 h4 { + font-size:1em; + margin:1em 0.25em 0.25em 0.25em; + padding:0px 0.25em; + padding:0.2em 0.2em 0.2em 0.5em; + vertical-align:middle; + margin:0px; + color:#333; + background:#eef6ff; + border-top:1px solid #fff; + border-bottom:1px solid #ddeeff; +} + +#get-satisfaction h2 a { + color:#fff; +} + +#get-satisfaction a { + color:#333; +} + +#get-satisfaction a:hover { + color:#fff; +} + +.c3 h2 a { + color:#fff; +} + +.c3 h2 a:hover { + color:#fff; + text-decoration:underline; +} + +.flash9 { + background-image:url(../demo/_image/flash9.png); + background-repeat:no-repeat; + background-position:bottom right; + _background-image:none; +} + +li.flash9 { + background-position:bottom right; +} + +.flash9.active { + background-image:url(../demo/_image/flash9-dark.png); + _background-image:none; +} + +.new { + background-image:url(../demo/_image/new.png); + background-repeat:no-repeat; + background-position:bottom right; + _background-image:none; +} + +.recent { + background-image:url(../demo/_image/new-bw.png); + background-repeat:no-repeat; + background-position:bottom right; + _background-image:none; +} + +.new.active, +.recent.active { + background-image:url(../demo/_image/new-dark.png); + _background-image:none; +} + +li.new { + background-position:top right; +} + +span.nevermind, +.removed { + text-decoration:line-through; + opacity:0.75; +} + +.padded { + padding:0.5em; +} + +.c3 p { + font-size:0.9em; + padding-left:0.5em; + padding-right:0.5em; +} + +.c1 pre code { + margin-top:0px; + font-size:xx-small; + color:#336699; + margin-left:0px; +} + +.c1 pre { + margin-top:0px; + padding-top:0px; + margin-left:0.5em; +} + +#reset-filter { + position:relative; + font-family:"Helvetica Neue Light","Helvetica Neue","Helvetica",helvetica,arial,verdana,sans-serif; + font-weight:lighter; + font-size:2.5em; + letter-spacing:-1px; +} + +.c2 .option { + font-size:small; + float:right; + display:inline; + margin-left:1em; + margin-right:0.5em; + margin-top:3px; + line-height:1em; + white-space:nowrap; +} + +.c2 .option a { + padding:0.1em 0.35em 0.1em 0.35em; + color:#3399cc; +} + +/* +.c2 .option a:hover { + background-color:#3399cc; + color:#fff; +} +*/ + +#filter-box { + position:relative; + display:none; +} + +#get-satisfaction { + position:relative; +} + +#gsfn_content { + padding:0.5em 0px 0px 0px; +} + +#gsfn_content ul { + margin-bottom:0.5em; +} + +#gsfn_content ul li { + border:none; +} + +div#gsfn_list_widget img { + border: none; +} + +div#gsfn_list_widget a { + text-decoration:none; +} + +div#gsfn_list_widget a.widget_title { + display: block; + margin-bottom: 10px; + font-weight: bold; +} + +div#gsfn_list_widget .powered_by { + font-family:verdana,arial; + margin:0px 1em 0px 1em; + padding:0.25em 0px 0px 0px; + border-top: 1px solid #ccc; + font-size:xx-small; + opacity:0.5; +} + +div#gsfn_list_widget .powered_by:hover { + opacity:1; +} + +div#gsfn_list_widget .powered_by a:hover { + color:#666; +} + +div#gsfn_list_widget div#gsfn_content { + font-size:x-small; + font-size:0.9em; + padding-left:0.5em; + padding-right:0.5em; +} + +div#gsfn_list_widget div#gsfn_content li { + text-align:left; + position: relative; + clear:right; + *zoom:1; +} + +div#gsfn_list_widget div#gsfn_content li:hover, +div#gsfn_list_widget div#gsfn_content li:hover a { + background:#3399cc; + color:#fff; +} + +div#gsfn_list_widget div#gsfn_content a.gsfn_link { + display:block; + line-height:1.2em; + padding:5px 0px 5px 5px; +} + +div#gsfn_list_widget div#gsfn_content a.gsfn_link:hover { + _color:#fff; + _background-color:#3399cc; +} + +div#gsfn_list_widget div#gsfn_content span.time { + font-size: xx-small; + color:#999; + padding-left:3px; + padding-right:3px; + text-align:right; + float:right; + display:inline; + margin-top:1px; +} + +div#gsfn_list_widget div#gsfn_content li:hover span.time { + color:#fff; +} + +div#gsfn_list_widget div#gsfn_content p.gsfn_summary { + margin-top: 2px; + position:relative; + z-index:2; +} + +.tight { + margin-top:0px; +} + +.compact { + margin-bottom:0.25em; +} + +.c2 a, +a.cta { + margin-top:-0.3em; + padding:0.2em 0.25em; + text-decoration:none; + color:#3399cc; + -khtml-border-radius:0.25em; + -moz-border-radius:0.25em; + border-radius:0.25em; + zoom:1; +} + +/* redefine for simple mp3 button demo */ +.c2 a.sm2_button { + -moz-border-radius:6px; + -webkit-border-radius:6px; + -o-border-radius:6px; + border-radius:6px; +} + +.c2 a.sm2_button.type-2 { + -moz-border-radius:9px; + -webkit-border-radius:9px; + -o-border-radius:9px; + border-radius:9px; +} + + +.c2 a { + margin-left:-0.2em; + margin-right:-0.2em; + color:#3399cc; + font-weight:bold; + text-decoration:none; +} + +.c2 a.cta { + text-decoration:none; +} + +a.cta span { + font-size:1.5em; + line-height:1em; +} + +a.cta:hover, +.c2 a:hover { + background-color:#3399cc; + border-color:#3399cc; + color:#fff; + text-decoration:none; +} + +.c2 a.sm2_button:hover { + /* arg. not specific enough, redefine here. */ + background-color:#cc3333; +} + +a.cta-more { + color:#ddeeff; + font-size:0.8em; + position:absolute; + right:0px; + margin:0px; + padding:1px; + bottom:0.9em; + line-height:1em; +} + +a.cta-more:hover { + background:#fff; + color:#3399cc; +} + +li.html5support span { + padding:0px 5px; + display:inline-block; + text-align:center; + font-weight:bold; + background:#ccc; + color:#fff; + -moz-border-radius:5px; + -webkit-border-radius:5px; + border-radius:5px; + margin-left:0.5em; + margin-bottom:0.25em; +} + +li.html5support em { + font-weight:bold; +} + +li.html5support span.true { + background:#669966; +} + +li.html5support span.partial { + background:#993333; +} + +li.html5support em.partial { + color:#993333; +} + +li.html5support em.true { + color:#669966; +} + +#nav ul li ul { + /* eh, why not. */ + -moz-box-shadow:2px 2px 2px rgba(51,153,204,0.2); + -khtml-box-shadow:2px 2px 2px rgba(51,153,204,0.2); + -webkit-box-shadow:2px 2px 2px rgba(51,153,204,0.2); + box-shadow:2px 2px 2px rgba(51,153,204,0.2); +} + +.newer { + vertical-align:middle; +} + +.newer a, +a.feature, +.c2 .feature-hot { + display:block; + background:#3399ff; + padding:0.3em 0.5em; + margin:-0.3em 0px 0px -0.5em; + color:#fff; + font-weight:bold; + border:3px solid #ccc; + border:3px solid rgba(255,255,255,0.66); + -moz-border-radius:8px; + -webkit-border-radius:8px; + border-radius:8px; + line-height:1em; + text-decoration:none; + font-size:small; + vertical-align:middle; +} + +a.feature { + display:inline; + margin-left:0px; +} + +.newer a, +.c2 .feature-hot { + background:#ff0000; + border-color:#ff6666; + color:#fff; + line-height:1em; +} + +.newer a:hover, +.c2 .feature-hot:hover { + background:#990000; + border-color:#cc0000; +} + +a.feature:focus, +a.feature:hover { + background:#ff0000; + border-color:#ff6666; + color:#fff; +} + +.newer p { + margin:0px; + padding:0px; +} + +h4 .scratched-out { + text-decoration:line-through; + color:#999; + /* + font-size:xx-small; + */ + font-size:0.9em; + margin-top:-0.75em; + -webkit-transform:rotate(-15deg); + -moz-transform:rotate(-15deg); +} + +.inthewild { + margin-top:1em; +} + +.inthewild a, +.inthewild a img { + border:none; +} + +.inthewild a { + margin-right:1em; +} + +.inthewild a:last-child { + margin-right:0px; +} + +.inthewild a, +.inthewild a img { + vertical-align:middle; +} + +.inthewild a { + display:inline-block; + display:-moz-inline-box; + overflow:hidden; + margin:1em 1em 0.5em 1em; + padding:0px; +} + +.inthewild a:first-child { + margin-left:0.5em; +} + +.inthewild a span { + position:absolute; + text-indent:-9999em; +} + +#favtape:hover { + background:#ff0066; + border-color:#ff0066; + color:#fff; +} + +#soundcloud { + width:83px; + height:58px; + background:transparent url(../demo/_image/soundcloud-thecloudplayer-logo.png) no-repeat 0px -59px; + margin-right:3px; +} + +#soundcloud:hover { + background-position:0px 0px; +} + +#lastfm { + width:80px; + height:28px; + background:transparent url(../demo/_image/lastfm.png) no-repeat 0px -28px; +} + +#lastfm:hover { + background-position:0px 0px; +} + +#mixcrate { + width:80px; + height:16px; + background:transparent url(../demo/_image/mixcrate.png) no-repeat 0px 0px; +} + +#mixcrate:hover { + background-position:0px -16px; +} + +#opera { + width:79px; + height:32px; + background:transparent url(../demo/_image/opera.png) no-repeat 0px 0px; +} + +#opera:hover { + background-position:0px -32px; +} + +/* homepage-specific demo shiz */ + +.sidenote { + font-size:x-small; + opacity:0.75; +} + +ul.playlist { + font-size:xx-small; +} + +ul.playlist li a { + font-size:1em; +} + +ul.playlist li a, +ul.playlist li a:hover { + background:transparent; + -khtml-border-radius:0px; + -moz-border-radius:0px; + border-radius:0px; + line-height:1em; +} + +ul.playlist li .timing { + top:0.6em; + font-size:xx-small; +} + +ul.playlist.use-peak li .peak { + /* overrides */ + height:0.61em; + margin-top:-5px; + width:0.92em; +} + +html.isSafari ul.playlist.use-peak li .peak { + margin-top:-4px; /* dumb tweak */ +} + +ul.playlist.use-peak li .timing { + right:4em; +} + +ul.playlist.use-peak li .peak-box { + height:0.66em; +} + +ul.playlist li .peak .l { + margin-right:0px; +} + +ul.playlist li .peak .l, +ul.playlist li .peak .r { + width:6px; +} + +ul.playlist li .peak .r { + left:9px; +} + +ul.playlist li a.not-supported { + /* give user a hint that the format doesn't work */ + text-decoration:line-through; + color:#666; + opacity:0.5; +} + +ul.graphic li { + line-height:1.5em; +} + +ul.graphic li a, +ul.graphic li a.sm2_link { + min-width:17.75em; + width:auto; +} + +ul.graphic li a, +ul.graphic li a.sm2_link { + background-color:#ddd; + border-color:#ddd; + color:#333; + vertical-align:middle; +} + +ul.graphic li a { + background:#ddd url(../demo/play-mp3-links/image/icon_play.png) no-repeat 3px 50%; + _background-image:url(../demo/play-mp3-links/image/icon_play.gif); +} + + +ul.graphic li a:hover, +ul.graphic li a.sm2_paused:hover, +ul.graphic li a.sm2_link:hover, +ul.graphic li a.sm2_playing, +ul.graphic li a.sm2_playing:hover { + background-color:#336699; + border-color:#336699; + color:#fff; +} + +ul.graphic li a.sm2_link { + /* Doesn't work on this page. */ + -webkit-transition-property: none; + -webkit-transition: none; +} + +.c2 ul.playlist li a { + margin:0px; + padding:0px; + letter-spacing: -0.02em; +} + +/* Flash positioning and flashblock / clicktoflash handling */ + +/* special-case for the SM2 homepage only */ + +body.home #sm2-container { + position:absolute; + width:48px; + height:48px; + margin:1px 0px 0px 1px; +} + +body.home #sm2-container.high_performance { + bottom:auto; + left:auto; + top:auto; +} + +body.home #sm2-container.swf_timedout { + border:1px solid #ff3333; + border-bottom:none; + margin:0px; + z-index:2; +} + +body.home #sm2-container.swf_unblocked { + width:1px; + height:1px; +} + +#sm2-support { + display:none; + font-size:1em; + border:1px solid #ff3333; + background:#fff6f0; + margin-top:48px; +} + +#demo-box { + position:relative; + float:right; + display:inline; + background: #fff; /* hide borders behind this box */ + padding-left:32px; + padding-right:16px; + margin-top:-1em; + width:21.25em; + /* hide from IE 6 */ + _position:absolute; + _left:-9999em; + _top:-9999em; +} + +#demo-box #without-html5 { + display:none; +} + +#demo-box #with-debug, +#demo-box #without-html5, +#demo-box #without-html5 a { + display:inline; + margin-top:-0.75em; + font-weight:normal; + font-size:x-small; + text-decoration:none; + font-weight:normal; + color:#666; +} + +#demo-box #with-debug { + margin-right:1.5em; +} + +#demo-box #without-html5 a:hover, +#demo-box #with-debug:hover { + color:#fff; +} + +#demo-box a.feature-hot { + display:inline; +} + +hr { + visibility:hidden; + margin:0px; + padding:0px; +} + +.demo-block { + position:relative; + background:#f9f9f9; + border:1px solid #e6e6e6; + padding:4px; + padding-top:0.5em; + margin-top:-0.55em; + border-top:none; +} + +#demo-header { + color:#333; + background:#f9f9f9; + border:1px solid #e6e6e6; + border-bottom:0px; + margin-bottom:0px; + padding:0.5em; +} + +#demos h3 { + padding-bottom:0px; + text-indent:0.5em; + font-weight:normal; +} + +#demos h3 a { + font-weight:normal; +} + +#revision-list > li { + margin-bottom:2em; +} + +/* seasonal decorations */ + +#lights { + position:absolute; + border-top:1px solid #006600; + left:0px; + top:0px; + width:100%; + height:100%; + overflow:hidden; + display:none; +} + +.xlsf-light { + position:absolute; + margin-top:-1px; +} + +body.fast .xlsf-light { + opacity:0.9; +} + +.xlsf-light { + opacity:0.9; +} + +.xlsf-fragment { + position:absolute; + background:transparent url(christmas-lights/image/bulbs-50x50-fragments.png) no-repeat 0px 0px; + width:50px; + height:50px; +} + +.xlsf-fragment-box { + position:absolute; + left:0px; + top:0px; + width:50px; + height:50px; + *width:100%; + *height:100%; + display:none; +} + +.xlsf-cover { + position:fixed; + left:0px; + top:0px; + width:100%; + height:100%; + background:#fff; + opacity:1; + z-index:999; + display:none; +} + +.figure { + display:inline; + display:inline-block; + border:1px solid #ddeeff; + padding:0.5em; + margin:0.5em 0px 0.5em 0px; +} + +.figure .code { +} + +.figure .code span { + padding:0.25em; + border:1px solid #f0f9ff; + background:#fff; +} + +.figure .code span.mid { + color:#666; +} + +#sm2-container.flash_debug { + /* flash movie, when soundManager.debugFlash = true */ + position:relative; + width:auto; + height:300px; + width:100%; + background:#f6f6f6; + border:1px solid #ccc; +} + +#sm2-container.flash_debug object, +#sm2-container.flash_debug embed { + width:100%; + height:100%; + left:auto; + top:auto; +} + +ul.file-structure ul { + padding-left:1.5em; +} + +ul.file-structure li { + list-style-type:square; + margin-top:0.25em; + margin-left:0px; +} + +ul.file-structure li span { + color:#999; +} + +#sm2-filesizes { + border:1px solid #ddd; +} + +#sm2-filesizes tr:nth-child(2n+1) { + background:#f9f9f9; +} + +#sm2-filesizes th { + background:#eee; + font-weight:bold; + text-align:left; +} + +#sm2-filesizes th { + padding:4px 6px; +} + +#sm2-filesizes td { + padding:0px 6px; + border:1px solid #eee; +} + +#sm2-filesizes p { + margin-top:0.5em; + margin-bottom:0px; +} + +#sm2-filesizes pre { + border-left:none; + margin-top:0.5em; + margin-bottom:0.5em; +} + +#sm2-filesizes .nw { + white-space:nowrap; +} + +#sm2-filesizes .booyaa { + /* in the words of Paris Hilton, "that's hot." (in the nerdy sense, I suppose.) */ + background:#fff9f9; + color:#990000; +} + +#history li.in > p.compact { + font-weight:bold; +} \ No newline at end of file diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/index.html b/docs/dymaxion/soundmanagerv297a-20101010/demo/index.html new file mode 100755 index 0000000..31133af --- /dev/null +++ b/docs/dymaxion/soundmanagerv297a-20101010/demo/index.html @@ -0,0 +1,28 @@ + + + +MP3 player demo + + + + + + + + + + + + +
+ +

SoundManager 2 Demos

+ +

+ SoundManager 2 project page +

+ +
+ + diff --git a/docs/dymaxion/soundmanagerv297a-20101010/demo/index.js b/docs/dymaxion/soundmanagerv297a-20101010/demo/index.js new file mode 100755 index 0000000..97140ee --- /dev/null +++ b/docs/dymaxion/soundmanagerv297a-20101010/demo/index.js @@ -0,0 +1,368 @@ +/* SoundManager 2 - project home utility JS */ + +function _id(sID) { + return document.getElementById(sID); +} + +getSoundByURL = function(sURL) { + return (typeof self.soundsByURL[sURL] != 'undefined'?self.soundsByURL[sURL]:null); +} + +function init() { + var o = document.getElementById('main'); + var el = o.getElementsByTagName('dt'); + for (var i=el.length; i--;) { + if ((i+1)%2==0) { + utils.addClass(el[i],'alt'); + } + } + var el = o.getElementsByTagName('dl'); + for (var i=el.length; i--;) { + if ((i+1)%2==0) { + utils.addClass(el[i],'alt'); + } + } +} + +function Utils() { + var self = this; + + this.hasClass = function(o,cStr) { + return (typeof(o.className)!='undefined'?new RegExp('(^|\\s)'+cStr+'(\\s|$)').test(o.className):false); + } + + this.addClass = function(o,cStr) { + if (!o || !cStr) return false; // safety net + if (self.hasClass(o,cStr)) return false; + o.className = (o.className?o.className+' ':'')+cStr; + } + + this.removeClass = function(o,cStr) { + if (!o || !cStr) return false; // safety net + if (!self.hasClass(o,cStr)) return false; + o.className = o.className.replace(new RegExp('( '+cStr+')|('+cStr+')','g'),''); + } + + this.toggleClass = function(o,cStr) { + var m = (self.hasClass(o,cStr)?self.removeClass:self.addClass); + m(o,cStr); + } + + this.getElementsByClassName = function(className,tagNames,oParent) { + var doc = (oParent||document); + var matches = []; + var i,j; + var nodes = []; + if (typeof(tagNames)!='undefined' && typeof(tagNames)!='string') { + for (i=tagNames.length; i--;) { + if (!nodes || !nodes[tagNames[i]]) { + nodes[tagNames[i]] = doc.getElementsByTagName(tagNames[i]); + } + } + } else if (tagNames) { + nodes = doc.getElementsByTagName(tagNames); + } else { + nodes = doc.all||doc.getElementsByTagName('*'); + } + if (typeof(tagNames)!='string') { + for (i=tagNames.length; i--;) { + for (j=nodes[tagNames[i]].length; j--;) { + if (self.hasClass(nodes[tagNames[i]][j],className)) { + matches[matches.length] = nodes[tagNames[i]][j]; + } + } + } + } else { + for (i=0; i'+o.innerHTML+''; + _id('search-results').style.display = 'block'; + _id('filter-box').style.display = 'block'; + if (isClear) { + _id('filter-box').style.paddingBottom = '0px'; + _id('filter-box').style.display = 'none'; + } else { + _id('filter-box').style.paddingBottom = '0px'; + if (!navigator.userAgent.match(/msie/i)) { + _id('filter-box').style.paddingBottom = Math.max(0,(document.documentElement.scrollTop || window.scrollY)-utils.getOffY(_id('filter-box'))-parseInt(_id('filter-box').offsetHeight)-20)+'px'; + } + _id('filter-box').style.display = 'block'; + // if ((!document.documentElement.scrollTop && !window.scrollY)) _id('filter-box').style.display = 'none'; + } + if (lastSelected) { + if (lastSelected == o) { + utils.toggleClass(lastSelected,'active'); + } else { + utils.removeClass(lastSelected,'active'); + utils.addClass(o,'active'); + } + } else { + utils.addClass(o,'active'); + } + lastSelected = o; + // cancel bubble, too? + return false; + } +} + +function getLiveData() { + getDynamicData(); + // reinvigorate.net is a handy (and free!) stats tracking service thingy. you should check it out. + var is_live = (document.domain && document.domain.match(/schillmania.com/i) && typeof re_ != 'undefined'); + loadScript('http://include.reinvigorate.net/re_.js'); + setTimeout(function(){ + if (typeof re_ != 'undefined') re_(is_live?'f6795-v062d0xv4u':'u8v2l-jvr8058c6n'); + },3000); +} + +function getDynamicData() { + // Attempt to fetch data from schillmania.com: "Get Satisfaction" topics, version updates etc. + loadScript('http://www.schillmania.com/services/soundmanager2/info/?version='+soundManager.versionNumber+'&rnd='+parseInt(Math.random()*1048576)); +} + +function loadScript(sURL,onLoad) { + var loadScriptHandler = function() { + var rs = this.readyState; + if (rs == 'loaded' || rs == 'complete') { + this.onreadystatechange = null; + this.onload = null; + window.setTimeout(onLoad,20); + } + } + function scriptOnload() { + this.onreadystatechange = null; + this.onload = null; + window.setTimeout(onLoad,20); + } + var oS = document.createElement('script'); + oS.type = 'text/javascript'; + if (onLoad) { + oS.onreadystatechange = loadScriptHandler; + oS.onload = scriptOnload; + } + oS.src = sURL; + document.getElementsByTagName('head')[0].appendChild(oS); +} + +function doAltShortcuts() { + var o = _id('shortcuts-list'); + if (!o) { + return false; + } + var oParents = []; + var oLIs = o.getElementsByTagName('li'); + var isIgnore = null; + var offset = 0; + for (var i=0; i