sIFR.debug = new function() {function Errors() {this.fire = function(id) {if(this[id + 'Alert']) alert(this[id + 'Alert']);throw new Error(this[id]);};this.isFile      = 'sIFR: Did not activate because the page is being loaded from the filesystem.';this.isFileAlert = 'Hi!\n\nThanks for using sIFR on your page. Unfortunately sIFR couldn\'t activate, because it was loaded '
+ 'directly from your computer.\nDue to Flash security restrictions, you need to load sIFR through a web'
+ ' server.\n\nWe apologize for the inconvenience.';this.getSource   = 'sIFR: Could not determine appropriate source';};sIFR.errors = new Errors();function log(msg) {if(!sIFR.ua.safari && window.console && console.log) console.log(msg);else alert(msg);}
this.ua = function() {var info = [];for(var prop in sIFR.ua) {if(sIFR.ua[prop] == Object.prototype[prop]) continue;info.push(prop, ': ', sIFR.ua[prop], '\n');}
log(info.join(''));};this.domains = function() {if(sIFR.domains.length == 0) {log('No domain verification used.');return;}
var domain = sIFR.util.domain();var matches = [], nonMatches = [];for(var i = 0; i < sIFR.domains.length; i++) {var match = sIFR.domains[i];if(sIFR.util.domainMatches(domain, match)) matches.push(match);else nonMatches.push(match);}
var msg = ['The domain "', domain, '"'];if(matches.length > 0) msg.push(' matches:\n* ', matches.join('\n* '));if(matches.length > 0 && nonMatches.length > 0) msg.push('\nbut');if(nonMatches.length > 0) msg.push(' does not match:\n* ', nonMatches.join('\n* '));log(msg.join(''));};this.ratios = function(kwargs, mergeKwargs) {if(mergeKwargs) kwargs = sIFR.util.copyProperties(kwargs, mergeKwargs);if(!kwargs.selector && !kwargs.elements) {log('Cannot calculate ratios, no selector or element given.');return;}
delete kwargs.wmode;delete kwargs.transparent;delete kwargs.opaque;var running = false;kwargs.onReplacement = function(cb) {if(running) return;running = true;cb.debugHandler = function(info, args) {if(/(FSCommand\:)?debug\:ratios/.test(info)) {cb.resetMovie();setTimeout(function() { cb.call('scale'); }, 1000);setTimeout(function() {var before = new Date();prompt('The ratios for ' + kwargs.selector + ' are:', args);if(sIFR.ua.ie && before - new Date < 200) {alert("Press Control+C to copy the text of this alert box. Then paste it into your favorite text editor.\n"
+ "The numbers between the braces, including the braces, are the ratios. You have to add those to your sIFR configuration.\n\n"
+ "Tip: try calculating the ratios in Firefox instead, it'll be easier to copy the ratios.\n\n"
+ args);}
}, 0);}
}
cb.call('ratios', '');};sIFR.replace(kwargs);};function verifyResource(uri, fail, ok) {if(sIFR.ua.ie && uri.charAt(0) == '/') {uri = window.location.toString().replace(/([^:]+)(:\/?\/?)([^\/]+).*/, '$1$2$3') + uri;}
var xhr = new XMLHttpRequest();xhr.open('GET', uri, true);xhr.onreadystatechange = function() {if(xhr.readyState == 4) {if(xhr.status != 200) log(fail);else log(ok);}
};xhr.send('');}
this.test = function(kwargs, mergeKwargs) {kwargs = merge(kwargs, mergeKwargs);var src = kwargs.src;var checked = false;if(typeof(src) != 'string') {if(src.src) src = src.src;if(typeof(src) != 'string') {var versions = [];for(var version in src) if(src[version] != Object.prototype[version]) versions.push(version);versions.sort().reverse();var result = '';var i = -1;while(!result && ++i < versions.length) {if(parseFloat(versions[i]) <= ua.flashVersion) result = src[versions[i]];var msg = '<' + src[versions[i]] + '>, flash ' + parseFloat(versions[i]);verifyResource(src[versions[i]], 'FAILED: ' + msg, 'OK: ' + msg);}
src = result;checked = true;}
}
if(!src) log('Could not determine appropriate source.');else if(!checked) verifyResource(src, 'FAILED: <' + src + '>', 'OK: <' + src + '>');};this.forceTest = function() {var replace = sIFR.replace;sIFR.replace = function(kwargs, mergeKwargs) {sIFR.debug.test(kwargs, mergeKwargs);replace.call(sIFR, kwargs, mergeKwargs);};}
};
