// Do not copy and paste the script to your document.
// It needs to be included as an external script!
// Please include this script in the <head> section of your (X)HTML document only!
//
// Version: 1.6.3

// --- USAGE ---
// writeFlashCode(flash_movie, fallback_image, flash_parameters);
// flash_movie      - URL to Flash Movie
// fallback_image   - URL to Fallback Image
// flash_parameters - Flash Parameters, e.g. width=775;height=600;version=6,0,65,0

// --- CUSTOMIZABLE PARAMETERS ---
var fsiPresetFlashVersion='6,0,65,0';   // Default value for required Flash version
var fsiImageFallbackLinked=false;        // Add a link to Flash Player download location to the fallback image
var fsiTextFallbackActive=true;         // Activate text fallback?
var fsiTextFallbackText='Flash Player Required.\nWould you like to download the latest version of Flash Player now?';
var flashFallbackImage='erez?src=erez-private/flashrequired.svg&tmp=Large&quality=97';

//
// EDITING THE LINES BELOW IS NOT RECOMMENDED
//

function flashDetector(presetFlashVersion, imageFallbackLinked, textFallbackActive, textFallbackText, flashFallbackImage){

	this.flashVersion = 0;
	var flashDownload;
	var flashDownloadCab;

	this.init = function(){

		var scheme;
		if (window.location && window.location.protocol.indexOf('https') > -1) scheme='https://';
		else scheme='http://';
		flashDownload = scheme+'www.adobe.com/go/getflashplayer';
		flashDownloadCab = scheme+'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab';
		var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
		var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
		var isOpera = (navigator.userAgent.toLowerCase().indexOf("opera") != -1) ? true : false;

		if (isIE && isWin && !isOpera) {
			try {
				var axTester = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
				var axVersionFull = axTester.GetVariable("$version");
				if (axVersionFull){
					var regVersion = axVersionFull.match(/(\d+),\d+,\d+,\d+/);
					if (regVersion && regVersion[1]){
						this.flashVersion = parseInt(regVersion[1]);
					}
				}
			}
			catch (e){}
		}
		else {
			var napl;
			if (navigator.plugins) napl = navigator.plugins;
			else napl = false;
			if (napl && napl.length > 0 && (napl["Shockwave Flash 2.0"] || napl["Shockwave Flash"])) {
				var flashDesc = napl["Shockwave Flash" + (napl["Shockwave Flash 2.0"] ? " 2.0" : "")].description;
				this.flashVersion = parseInt(flashDesc.split(" ")[2].split(".")[0]);
			}
		}
		// Scan Win/IE Old
		if (this.flashVersion == 0 && isIE && isWin && !isOpera) {
			pushVBDetection();
		}
	}

	this.writeFlashCode = function (fsiurl, fallbackimg, parameters){

		var objcode='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="'+flashDownloadCab;
		var emdcode='<embed type="application/x-shockwave-flash" pluginspage="'+flashDownload+'"';

		var params = new Object();
		if (parameters){
			var parameters = parameters.split(";");
			for (var c=0; c < parameters.length; c++){
				var parameter=parameters[c].split("=");
				if (parameter[1]) params[parameter[0].toLowerCase()]=parameter[1];
				else if (parameter!="") alert("Wrong parameter: " + parameter);
			}
		}

		var useVersion;
		if (params["version"]) {
			useVersion=unescape(params["version"]);
			params["version"]='';
		}
		else useVersion=presetFlashVersion;
		objcode+='#version='+useVersion+'"';

		if (!params["quality"]) {
			params["quality"]='High';
		}

		if (!params["allowscriptaccess"]) {
			params["allowscriptaccess"]='always';
		}

		var majorversion = useVersion.split(",")[0];

		if (this.flashVersion >= majorversion){
			var code;
			if (params["width"]) {
				code=' width="'+params["width"]+'"';
				objcode+=code;
				emdcode+=code;
				params["width"]='';
			}
			if (params["height"]) {
				code=' height="'+params["height"]+'"';
				objcode+=code;
				emdcode+=code;
				params["height"]='';
			}
			if (params["id"] || params["name"]) {
				objcode+=' id="'+params["id"]+'"';
				if (params["name"]) emdcode+=' name="'+params["name"]+'"';
				else emdcode+=' name="'+params["id"]+'"';
				params["id"]='';
				params["name"]='';
			}
			objcode+='>\n';
			params["src"]=escape(fsiurl);
			params["movie"]=escape(fsiurl);

			for (var pkey in params){
				if (params[pkey]){
					if (pkey != 'src') objcode+='<param name="'+pkey+'" value="'+unescape(params[pkey])+'"\/>\n';
					if (pkey != 'movie') emdcode+=' '+pkey+'="'+unescape(params[pkey])+'"';
				}
			}
			emdcode+='\/>';

			objcode+=emdcode+'\n';
			objcode+='<\/object>';
		}
		else if (flashFallbackImage){
			objcode=fallbackimg;
			if (imageFallbackLinked) objcode='<a href="'+flashDownload+'" target="_blank">'+objcode+'</a>';
		}

		if (!objcode){
			if (textFallbackActive && confirm(textFallbackText)) top.location=flashDownload;
		}
		else {
			document.write(objcode);
		}
	}

	// Run VBScript detection part in old IE
	pushVBDetection = function(){
		var doc = '<scr' + 'ipt type="text/vbscript"\>\n';
		doc += 'On Error Resume Next\n';
		doc += 'Dim i\n';
		doc += 'For i = 30 to 6 Step -1\n';
		doc += 'If Not(IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash." & i))) Then\n';
		doc += 'Else\n';
		doc += 'fsiFD.flashVersion = i\n';
		doc += 'Exit For\n';
		doc += 'End If\n';
		doc += 'Next\n';
		doc += '<\/scr' + 'ipt>\n';
		document.write (doc);
	}

}

function writeFlashCode(fsiurl, fallbackimg, parameters){
	if (fsiFD) fsiFD.writeFlashCode(fsiurl, fallbackimg, parameters);
}

var fsiFD;
if (!fsiFD) {
	fsiFD = new flashDetector(fsiPresetFlashVersion, fsiImageFallbackLinked, fsiTextFallbackActive, fsiTextFallbackText, flashFallbackImage);
	fsiFD.init();
}

// Copyright 2008 NeptuneLabs GmbH (http://www.neptunelabs.com)

