
/* Generic Flash Object: Used to embed flash movies in HTML */
/* ======================================================== */
function FlashObject(instanceName){
	var t = this;
	var instanceName = instanceName || 'flash';
	t.activeX = false;
	t.maxVersion = 10;
	t.ieAutoInstall = true;
	t.userHasFlash = false;

	// This method attempts to find an html element by id or reference.
	// Returns: Element Reference or an array of elements if multiple values are passed in.
	// ====================================================================================
	t.find = function() {
		var elements = new Array();
		for (var i = 0; i < arguments.length; i++) {
			var element = arguments[i];
			if (typeof element == 'string') {
				if (document.getElementById){element = document.getElementById(element);}
				else if (document.all){element = document.all[element];}
			}
			if (arguments.length == 1) {return element;}
			elements.push(element);
		}
		return elements;
	}

	// This method determines major version of browser flash player
	// Returns: Boolean.
	// ========================================================================
	t.hasVersion = function(ver){
		t.swf = false;
		if(!ver) ver = 0;
		var nav = navigator;
		if(nav.plugins && nav.plugins.length > 0){
			var mime,type,detail,version,begin,end;
			mime = nav.mimeTypes;
			type = 'application/x-shockwave-flash';
			if(mime && mime[type] && mime[type].enabledPlugin && mime[type].enabledPlugin.description){
				detail = mime[type].enabledPlugin.description;
				end=detail.indexOf('.');
				if (detail.charAt(detail.indexOf('.')-2) != " ") { 
					begin=(detail.indexOf('.')-2);
				} else {
					begin=(detail.indexOf('.')-1);
				}
				//version = detail.charAt(detail.indexOf('.'));
				version=detail.substring(begin,end);	
				t.swf = (version >= ver) ? true : false;
			}
		}else if(nav.appVersion.indexOf("Mac") == -1 && window.execScript){
			for(var i=ver; i<=t.maxVersion&&i!=1&&t.swf!=true; i++){
				execScript('on error resume next: '+instanceName+'.swf=IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash'+((i==0)?'':'.'+i)+'"))','VBScript');
			}
			t.activeX = true;
		}else{
			t.swf = false;
		}
		t.userHasFlash = t.swf;
		return t.swf;
	}

	// This method assembles a flash plugin object and attaches any params
	// Returns: String. This can be used to write to the page.
	// ========================================================================
	t.getPluginTag = function(swfFile,width,height,bgcolor,ver,altFormat,params){
		var str = '';
		var win = (navigator.appVersion.toLowerCase().indexOf("win")!=-1);
		var ie = (navigator.appName=="Microsoft Internet Explorer");
		if(bgcolor=='transparent'){bgcolor='';params+=",wmode=transparent";}
		if(t.hasVersion(ver) && swfFile || win && ie && swfFile && t.ieAutoInstall){
			var additionalParams = '';
			if(params && params.length>0){
				var pArray = params.split(",");
				for(var i=0; i<pArray.length; i++){
					var ta = pArray[i].substr(0,pArray[i].indexOf('='));
					var v = pArray[i].substr(pArray[i].indexOf('=')+1,pArray[i].length);
					additionalParams += (t.activeX)?'\t<param name="' + ta + '" value="' + v + '" />\n': ' '+ ta + '="' + v + '"';
				}
			}
			if(t.activeX){
				str = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="'+width+'" height="'+height+'">\n';
				str += '\t<param name="movie" value="'+swfFile+'" />\n';
				str += '\t<param name="quality" value="high" />\n';
				str += '\t<param name="menu" value="false" />\n';
				str += '\t<param name="bgcolor" value="'+bgcolor+'" />\n';
				str += additionalParams;
				str += altFormat;
				str += '</object>\n\n';
				return str;
			}else{
				//console.log(additionalParams);
				str = '<embed src="'+swfFile+'" quality="high" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" menu="false" width="'+width+'" height="'+height+'" bgcolor="'+bgcolor+'" '+additionalParams+'></embed>\n';
				return str;
			}
		}else{
			return altFormat;
		}
	}



	// This method will write the flash string within an html element or direct.
	// Returns: Element Reference or an array of elements if multiple values are passed in.
	// ====================================================================================
	t.embedMovie = function(swfFile,width,height,bgcolor,ver,altFormat,params,target){
		var params = params || '';
		var target = target || '';
		var flashStr = t.getPluginTag(swfFile,width,height,bgcolor,ver,altFormat,params);
		target = t.find(target);
		if(target){
			target.innerHTML = flashStr;
			var flashObj = target.getElementsByTagName('object')[0] || target.getElementsByTagName('embed')[0];
			return flashObj;
		}
		else{document.write(flashObj);}
	}
}
flash = new FlashObject();

