/*
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.ok()) {
// 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() {
// SM2 has now initialized, either no blocking OR blocked movie was allowed/whitelisted
var fb = soundManager._flashBlock;
// Yay! recovered OK.
fb.checkFlashStatus();
});
soundManager.ontimeout(function() {
// Blocking was passed (or no blocking), but then something *else* went wrong.
// stop timer, if applicable
fb.stopTimer();
});
}();