// swfutils.js
//------------------------------------------------------------------
// Created by Joel Nagy
// v 1.20 (special for expressionofjoy.com)
// Last Updated on April 23, 2009 12:04pm EST 
//------------------------------------------------------------------

// FLASH GLOBALS
var VM = window.requiredMajorVersion != null? window.requiredMajorVersion: 9, VN = window.requiredMinorVersion? window.requiredMinorVersion: 0, VR = window.requiredRevision? window.requiredRevision: 45; // VERSION MINIMUM!!!
var ExpressInstall = 'http://www.bmwusa.com/JavaScript/swfobject/expressinstall.swf';
var __swfs = [];

// BROWSER DETECTIONS
var __userAgent = navigator.userAgent.toLowerCase();
function whichSafari(w) {
    w = w ? w : 0;
    var v = navigator.appVersion.toLowerCase();
    var p = v.lastIndexOf('safari/');
    var r = parseInt(v.slice(p + 7, p + 7 + 6));
    if (w > 0) {
        if (r < 500) return w == 2 ? true : false;
        else if (r < 600) return w == 3 ? true : false;
        else if (r >= 600) return w == 4 ? true : false;
    }
    if (p > 0) return true;
    return false;
}
window.safari = whichSafari();
window.safari2 = whichSafari(2);
window.safari3 = whichSafari(3);
window.ie = (document.all != null && window.opera == null);
window.ie6 = window.ie && navigator.appVersion.toLowerCase().indexOf('msie 6.') > 0;
window.macppc = __userAgent.indexOf('ppc') > 0 && __userAgent.indexOf('mac') > 0;
window.gecko = __userAgent.indexOf('gecko') > 0;

function _$(o) {
    return document.getElementById(o);
}

function killswfs(O) {
	if (O && O.length) {
		for (var i = O.length-1; 0 <= i; i--) {
			O[i].removeNode(true);
		}
	}	
}

if (window.ie) {
	window.attachEvent("onbeforeunload", function () {
		killswfs(document.all.tags("object"));
		killswfs(document.all.tags("embed"));
	});
}

// FLASH LOADER
function swfload(div, swfname, swf, width, height, flashvars, params, options) {
    try {
        if (!div && !swf && !width && !height) return;
        swfname = (swfname == '' || swfname == null) ? div + 'Movie' : swfname;
        var Fv = {}, varStr = '', paramStr = '', optStr = '', attStr = '', verStrComma = VM + "," + VN + "," + VR + ",0", verStrDots = VM + "." + VN + "." + VR;

        if (window.ie) ExpressInstall = null;

        // Get Flash Version
        if (window.swfobject != null) { // SWFOBJECT 2.0
            Fv = swfobject.getFlashPlayerVersion();
        } else if (window.deconcept != null && !window.swfobject) { // SWFOBJECT 1.5
            var fv = deconcept.SWFObjectUtil.getPlayerVersion();
            Fv.major = fv['major'];
            Fv.minor = fv['minor'];
            Fv.release = fv['rev'];
        }

        if (!meetsFlashVer(Fv, VM, VN, VR) && (window.swfobject != null || window.deconcept != null)) { // Minimum version not met, try to load Express Install if not IE
            if (window.swfobject != null) { // SWFOBJECT 2.0
                swfobject.embedSWF(swf, swfname, width, height, verStrDots, ExpressInstall);
            } else if (window.deconcept != null && !window.swfobject) { // SWFOBJECT 1.5
                var flashobj = new SWFObject(swf, swfname, width.toString(), height.toString(), verStrDots, params['bgcolor'] ? params['bgcolor'] : "#FFFFFF");
                if (!IE) flashobj.useExpressInstall(ExpressInstall);
                window[swfname] = new Object();
                flashobj.write(div);
            }
        } else { // Embed by Hand
            for (var flashvar in flashvars)
                varStr += flashvar + '=' + flashvars[flashvar] + '&';
            if (varStr != '')
                varStr = varStr.slice(0, varStr.length - 1)
			for (var param in params) {
	        	paramStr += '<param name="' + param + '" value="' + params[param] + '">';
	            attStr += ' ' + param + '="' + params[param] + '"';
	        }
        	for (var opt in options) {
	           	optStr += ' ' + opt + '="' + options[opt] + '" ';
			}
            paramStr += '<param name="FlashVars" value="' + varStr + '">';
            window[swfname] = new Object();

			var embedTag = '<embed id="' + swfname + '" src="' + swf + '" quality="high" width="' + width + '" height="' + height + '" name="' + swfname + '"' + optStr + attStr +' flashvars='+ varStr +' type="application/x-shockwave-flash"></embed>';
            var ieParams = '<param name="movie" value="' + swf + '"></param>';

if (window.all)
            var swfhtml = '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" ' + optStr + ' width="' + width + '" height="' + height + '" type="application/x-shockwave-flash" data="' + swf + '" id="' + swfname + '" style="visibility: visible; height: ' + height + (parseInt(height) == height? 'px': '') +'; width: ' + width + (parseInt(width) == width? 'px': '') +';">' + paramStr + (window.ie ? ieParams : '') + '</object>';
else
	var swfhtml = embedTag;

          	var d = _$(div);
			if (d != null) {
            	d.innerHTML = '';
            	d.innerHTML = swfhtml;
			} else
				document.write(swfhtml);
        } // ?meetsFlashVer
		
		
		__swfs.push(swfname);
    } catch (e) { }
} //: swfload()

function meetsFlashVer(Fv, vm, vn, vr, ignore) {
    if (ignore == null && ((window.safari3 && meetsFlashVer(Fv, 8, 0, 22, true)) || (window.safari2 && meetsFlashVer(Fv, 9, 0, 16, true))))
        return true;
    else if (Fv.major > vm || (Fv.major >= vm && Fv.minor > vn) || (Fv.major >= vm && Fv.minor >= vn && Fv.release >= vr))
        return true;
    else
        return false;
} //: meetsFlashVer()