/** * 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: absolute; width: 1px; height: 1px; overflow: hidden; /* screw IE 6, just make it display nice */ _overflow: hidden; } #sm2-container object, #sm2-container embed { /** * the actual SWF movie bit. * important: The SWF needs to be able to be moved off-screen without display: or position: changes. * changing display: or position: or overflow: here or on parent can cause SWF reload or other weird issues after unblock * e.g., SM2 starts but strange errors, no whileplaying() etc. */ width: 48px; height: 48px; /* some flash blockers may also respect this rule */ max-width: 48px; max-height: 48px; } #sm2-container.swf_timedout { /* expand to show the timed-out SWF content */ position: relative; width: 48px; height: 48px; } #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. */ min-width: 48px; min-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_loaded object, #sm2-container.swf_loaded embed, #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, #sm2-container.high_performance.swf_timeout { /* "high performance" case: keep on-screen at all times */ position: absolute; position: fixed; } #sm2-container.high_performance { overflow: hidden; _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. * try to stay within ClickToFlash "invisible" limits (so it won't be blocked.) */ z-index: 99; /* try to stay on top */ } #sm2-container.high_performance.swf_loaded, #sm2-container.high_performance.swf_unblocked { z-index: auto; } #sm2-container.high_performance.swf_loaded, #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 * also, clickToFlash (Safari <5.1) may auto-load "invisible" SWFs at this size */ height: 8px; width: 8px; } #sm2-container.high_performance.swf_loaded { /* stay bottom/left */ top: auto; bottom: 0px; left: 0px; } #sm2-container.high_performance.swf_loaded object, #sm2-container.high_performance.swf_loaded embed, #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 */ }