var requiredVersion = 5;   // Version the user needs to view site (max 6, min 2)
var useRedirect = true; 

// System globals
var flash2Installed = false;    // boolean. true if flash 2 is installed
var flash3Installed = false;    // boolean. true if flash 3 is installed
var flash4Installed = false;    // boolean. true if flash 4 is installed
var flash5Installed = false;    // boolean. true if flash 5 is installed
var flash6Installed = false;    // boolean. true if flash 6 is installed
var maxVersion = 6;             // highest version we can actually detect
var actualVersion = 0;          // version the user really has
var hasRightVersion = false;    // boolean. true if it's safe to embed the flash movie in the page
var flashpass = false;
var jsVersion = 1.0;            // the version of javascript supported

function detectFlash() {  
	if (navigator.plugins) {
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
			var isVersion2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
			var flashDescription = navigator.plugins["Shockwave Flash" + isVersion2].description;
			
			//var flashVersion = parseInt(flashDescription.charAt(flashDescription.indexOf(".") - 1));
			var reg = new RegExp(/[^\d](\d+)\./);
			var flashVersion = reg.exec(flashDescription)[1];
		
			flash2Installed = flashVersion == 2;    
			flash3Installed = flashVersion == 3;
			flash4Installed = flashVersion == 4;
			flash5Installed = flashVersion == 5;
			flash6Installed = flashVersion >= 6;
		}
	}

	var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;    // true if we're on ie
	var isWin = (navigator.appVersion.indexOf("Windows") != -1) ? true : false; // true if we're on windows
	
	// This is a js1.1 code block, so make note that js1.1 is supported.
	jsVersion = 1.1;
	
	// Write vbscript detection on ie win. IE on Windows doesn't support regular
	// JavaScript plugins array detection.
	if(isIE && isWin){
	document.write('<SCR' + 'IPT LANGUAGE=VBScript\> \n');
	document.write('on error resume next \n');
	document.write('flash2Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.2"))) \n');
	document.write('flash3Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.3"))) \n');
	document.write('flash4Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.4"))) \n');
	document.write('flash5Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.5"))) \n');  
	document.write('flash6Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.6"))) \n');  
	document.write('</SCR' + 'IPT\> \n'); // break up end tag so it doesn't end our script
	}
  
	for (var i = 2; i <= maxVersion; i++) {  
		if (eval("flash" + i + "Installed") == true) actualVersion = i;
	}
	
	if(navigator.userAgent.indexOf("WebTV") != -1) actualVersion = 3;  
	
	if (actualVersion >= requiredVersion) {
		flashpass = hasRightVersion = true;                
	}
}

detectFlash();  // call our detector now that it's safely loaded.  





// Copies paramters the first object into the second object
function mergeobjs(one, two) {
	for (var key in one) {
		if (two[key]) { continue; }
		two[key] = one[key];
	}
	return two;
}

// Load a flash move
// main arguments: movie, movieid, divid, width, height, noflashhtml, extratest
// other arguments: schema, version, base, id, width, height, align, scroll, movie, flashvars, menu, quality, wmode, bgcolor, swlive, script
function flashPlugin(args){

	var version = 5;
	var defaults = {
		schema: document.location.protocol,
		classid: "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
		codebase: document.location.protocol + "//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=" + version,
		version: version,
		base: '',
		movieid: 'flash',
		width: '200', 
		height: '200',
		align: 'top',
		scroll: '',
		flashvars: '',
		menu: 'no',
		quality: 'high',
		wmode: 'opaque',
		bgcolor: '#ffffff',
		swlive: 'true',
		script: ''
	};
	
	args = mergeobjs(defaults, args);

	function attribute(name, value){
		return " " + name + '="' + value + '"';
	}
	
	function param(name, value){
		return "<PARAM " + attribute("name", name) + attribute("VALUE", value) + ">";
	}
	
    var output = (
        "<object" 
        + (args.movieid ? attribute("id", args.movieid) + attribute("name", args.movieid) : "")
        + attribute("classid", args.classid)
        + attribute("codebase", args.codebase)
        + attribute("width", args.width)
        + attribute("height", args.height)
        + attribute("align", args.align)
        + (scroll ? attribute("scroll", args.scroll) : "")
        + ">"
        + param("movie", args.movie)
        + (args.flashvars ? param("flashvars", args.flashvars) : "")
        + param("quality", args.quality)
        + (args.base ? param("base", args.base) : "")
        + (args.menu ? param("menu", args.menu) : "")
        + (args.wmode ? param("wmode", args.wmode) : "")
        + (args.bgcolor ? param("bgcolor", args.bgcolor) : "")
        + "<embed"
		+ (args.movieid ? attribute("id", args.movieid) + attribute("name", args.movieid) : "")
        + attribute("src", args.movie)
        + (args.movieid ? attribute("name", args.movieid) : "")
        + (args.flashvars ? attribute("flashvars", args.flashvars) : "")
        + attribute("quality", args.quality)
        + attribute("width", args.width)
        + attribute("height", args.height)
        + attribute("align", args.align)
        + attribute("type", "application/x-shockwave-flash")
        + attribute("plugninspace", args.schema + "//www.macromedia.com/go/getflashplayer")
        + (args.base ? attribute("base", args.base) : "")
        + (args.menu ? attribute("menu", args.menu) : "")
        + (args.wmode ? attribute("wmode", args.wmode) : "")
        + (args.bgcolor ? attribute("bgcolor", args.bgcolor) : "")
        + (args.swlive ? attribute("swliveconnect", args.swlive) : "")
        + (args.script ? attribute("mayscript", args.script) : "")
        + "</embed>"
        + "</object>"
    );
    
    var pass = flashpass;
    if (args.extratest) { pass = args.extratest(); }
    
    if (pass) {
		return output;
    } else {
		return args.noflashhtml;
    }
}


