/**
 * Generates a browser-specific Flash tag. Create a new instance, set whatever
 * properties you need, then call either toString() to get the tag as a string, or
 * call write() to write the tag out.
 */

/**
 * Creates a new instance of the FlashTag.
 * src: The path to the SWF file.
 * width: The width of your Flash content.
 * height: the height of your Flash content.
 */
function FlashTag(src, width, height)
{
    this.src       = src;
    this.width     = width;
    this.height    = height;
    this.version = '9,0,28,0';
    this.id        = null;
    this.bgcolor   = 'ffffff';
    this.flashVars = null;
    this.wmode = null;
    this.quality = null;
    this.allowFullScreen = null;
    this.allowScriptAccess = null;
    this.movie = null;
    this.autoplay = null;
}

/**
 * Sets the Flash version used in the Flash tag.
 */
FlashTag.prototype.setVersion = function(v)
{
    this.version = v;
}

FlashTag.prototype.setWmode = function(v) {
    this.wmode = v;
}

FlashTag.prototype.setQuality = function(v) {
this.quality = v;
}

/**
 * Sets the ID used in the Flash tag.
 */
FlashTag.prototype.setId = function(id)
{
    this.id = id;
}

/**
 * Sets the background color used in the Flash tag.
 */
FlashTag.prototype.setBgcolor = function(bgc)
{
    this.bgcolor = bgc;
}

/**
 * Sets any variables to be passed into the Flash content. 
 */
FlashTag.prototype.setFlashvars = function(fv)
{
    this.flashVars = fv;
}

FlashTag.prototype.setAllowFullScreen = function(fv)
{
	this.allowFullScreen = fv;
}
FlashTag.prototype.setAllowScriptAccess = function(fv)
{
	this.allowScriptAccess = fv;
}
FlashTag.prototype.setMovie = function(fv)
{
	this.movie = fv;
}
FlashTag.prototype.autoplay = function(ap)
{
	this.autoplay = ap;
}


/**
 * Get the Flash tag as a string. 
 */
FlashTag.prototype.toString = function () {
	var ie = (navigator.appName.indexOf("Microsoft") != -1) ? 1 : 0;
	var flashTag = new String();
	if (ie) {
		flashTag += '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" ';
		if (this.id != null) {
			flashTag += 'id="' + this.id + '" ';
		}
		flashTag += 'codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=' + this.version + '" ';
		flashTag += 'width="' + this.width + '" ';
		flashTag += 'height="' + this.height + '">';
		flashTag += '<param name="movie" value="' + this.src + '"/>';
		flashTag += '<embed src="' + this.src + '" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" name="banner" width="' + this.width + '" height="' + this.height + '" quality="' + this.quality + '"/>';
		flashTag += '<param name="quality" value="medium"/>';
		flashTag += '<param name="bgcolor" value="#' + this.bgcolor + '"/>';
		if (this.flashVars != null) {
			flashTag += '<param name="flashvars" value="' + this.flashVars + '"/>';
		}
		if (this.quality != null) {
			flashTag += '<param name="quality" value="' + this.quality + '"/>';
		}
		if (this.wmode != null) {
			flashTag += '<param name="wmode" value="' + this.wmode + '"/>';
		}

		if (this.allowFullScreen != null) {
			flashTag += '<param name="allowFullScreen" value="' + this.allowFullScreen + '"/>';
		}
		if (this.allowScriptAccess != null) {
			flashTag += '<param name="allowScriptAccess" value="' + this.allowScriptAccess + '"/>';
		}
		if (this.movie != null) {
			flashTag += '<param name="movie" value="' + this.movie + '"/>';
		}
		if (this.autoplay != null) {
			flashTag += '<param name="autoplay" value="' + this.autoplay + '"/>';
		}
		flashTag += '</object>';
	}
	else {
		flashTag += '<embed src="' + this.src + '" ';
		flashTag += 'quality="high" ';
		flashTag += 'bgcolor="#' + this.bgcolor + '" ';
		flashTag += 'width="' + this.width + '" ';
		flashTag += 'height="' + this.height + '" ';
		flashTag += 'type="application/x-shockwave-flash" ';
		if (this.flashVars != null) {
			flashTag += 'flashvars="' + this.flashVars + '" ';
		}
		if (this.id != null) {
			flashTag += 'name="' + this.id + '" ';
		}

		if (this.wmode != null) {
			flashTag += 'wmode="' + this.wmode + '" ';
		}
		if (this.allowFullScreen != null) {
			flashTag += 'allowFullScreen="' + this.allowFullScreen + '" ';
		}
		if (this.allowScriptAccess != null) {

			flashTag += 'allowScriptAccess="' + this.allowScriptAccess + '" ';
		}
		if (this.movie != null) {
			flashTag += 'movie="' + this.movie + '" src="' + this.src + '"';
		}
		if (this.autoplay != null) {
			flashTag += 'autoplay="' + this.autoplay + '" ';
		}

		flashTag += 'pluginspage="http://www.macromedia.com/go/getflashplayer">';
		flashTag += '</embed>';
	}
	return flashTag;
}

/**
 * Write the Flash tag out. Pass in a reference to the document to write to. 
 */
FlashTag.prototype.write = function(doc)
{
    doc.write(this.toString());
}


function FlashDetector() {
}

FlashDetector.prototype.HasFlash = function() {
	//alert(this.GetSwfVer());
	return this.GetSwfVer() != -1;
}

var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;

FlashDetector.prototype.GetSwfVer = function() {
	// NS/Opera version >= 3 check for Flash plugin in plugin array
	var flashVer = -1;

	if (navigator.plugins != null && navigator.plugins.length > 0) {
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
			var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
			var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
			var descArray = flashDescription.split(" ");
			var tempArrayMajor = descArray[2].split(".");
			var versionMajor = tempArrayMajor[0];
			var versionMinor = tempArrayMajor[1];
			if (descArray[3] != "") {
				tempArrayMinor = descArray[3].split("r");
			} else {
				tempArrayMinor = descArray[4].split("r");
			}
			var versionRevision = tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0;
			var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
		}
	}
	// MSN/WebTV 2.6 supports Flash 4
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
	// WebTV 2.5 supports Flash 3
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
	// older WebTV supports Flash 2
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
	else if (isIE && isWin && !isOpera) {
		flashVer = this.ControlVersion();
	}
	return flashVer;
}

FlashDetector.prototype.ControlVersion = function()
{
	var version;
	var axo;
	var e;

	// NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry

	try {
		// version will be set for 7.X or greater players
		axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
		version = axo.GetVariable("$version");
	} catch (e) {
	}

	if (!version)
	{
		try {
			// version will be set for 6.X players only
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
			
			// installed player is some revision of 6.0
			// GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
			// so we have to be careful. 
			
			// default to the first public version
			version = "WIN 6,0,21,0";

			// throws if AllowScripAccess does not exist (introduced in 6.0r47)		
			axo.AllowScriptAccess = "always";

			// safe to call for 6.0r47 or greater
			version = axo.GetVariable("$version");

		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 4.X or 5.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = axo.GetVariable("$version");
		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 3.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = "WIN 3,0,18,0";
		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 2.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
			version = "WIN 2,0,0,11";
		} catch (e) {
			version = -1;
		}
	}
	
	return version;
}

