function ETSOOFlash(swf,id,w,h,ver,c,useExpressInstall,quality,xiRedirectUrl,redirectUrl,detectKey)
{
	if(!document.createElement||!document.getElementById)return;
	this.DETECT_KEY=detectKey?detectKey:'detectflash';
	this.skipDetect=this.getRequestParameter(this.DETECT_KEY);
	this.useExpressInstall=useExpressInstall;
	this.params=new Object();
	this.variables=new Object();
	this.attributes=new Object();
	if(swf)this.setAttribute('swf',swf);
	if(id)this.setAttribute('id',id);
	if(w)this.setAttribute('width',w);
	if(h)this.setAttribute('height',h);
	if(ver)this.setAttribute('version',new this.PlayerVersion(ver.toString().split(".")));
	this.installedVer=this.getPlayerVersion(this.getAttribute('version'),useExpressInstall);
	if(c)this.addParam('bgcolor',c);
	var q=quality?quality:'high';
	this.addParam('quality',q);
	var xir=(xiRedirectUrl)?xiRedirectUrl:window.location;
	this.setAttribute('xiRedirectUrl',xir);
	this.setAttribute('redirectUrl','');
	if(redirectUrl)this.setAttribute('redirectUrl',redirectUrl);
}
ETSOOFlash.prototype.getRequestParameter=function(param)
{
	var q=document.location.search||document.location.href.hash;
	if(q)
	{
		var startIndex=q.indexOf(param+"=");
		var endIndex=(q.indexOf("&",startIndex)>-1)?q.indexOf("&",startIndex):q.length;
		if(q.length>1&&startIndex>-1)
		{
			return q.substring(q.indexOf("=",startIndex)+1,endIndex);
		}
	}
	return"";
}
ETSOOFlash.prototype.PlayerVersion=function(arrVersion)
{
	this.major=parseInt(arrVersion[0])||0;
	this.minor=parseInt(arrVersion[1])||0;
	this.rev=parseInt(arrVersion[2])||0;
	this.isValid=function(fv)
	{
		if(this.major<fv.major)return false;
		if(this.major>fv.major)return true;
		if(this.minor<fv.minor)return false;
		if(this.minor>fv.minor)return true;
		if(this.rev<fv.rev)return false;
		return true
	};
}
ETSOOFlash.prototype.getPlayerVersion=function(reqVer,xiInstall)
{
	var PlayerVersion=this.PlayerVersion(0,0,0);
	if(navigator.plugins&&navigator.mimeTypes.length)
	{
		var x=navigator.plugins["Shockwave Flash"];
		if(x&&x.description)
		{
			PlayerVersion=new this.PlayerVersion(x.description.replace(/([a-z]|[A-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."))
		}
	}
	else
	{
		try{
			var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
			for(var i=3;axo!=null;i++)
			{
				axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+i);
				PlayerVersion=new this.PlayerVersion([i,0,0]);
			}
		}catch(e){}
		if(reqVer&&PlayerVersion.major>reqVer.major)return PlayerVersion;
		if(!reqVer||((reqVer.minor!=0||reqVer.rev!=0)&&PlayerVersion.major==reqVer.major)||PlayerVersion.major!=6||xiInstall)
		{
			try
			{
				PlayerVersion=this.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));
			}catch(e){}
		}
	}
	return PlayerVersion;
}
ETSOOFlash.prototype.setAttribute=function(name,value)
{
	this.attributes[name]=value;
}
ETSOOFlash.prototype.getAttribute=function(name)
{
	return this.attributes[name];
}
ETSOOFlash.prototype.addParam=function(name,value)
{
	this.params[name]=value;
}
ETSOOFlash.prototype.getParams=function(name)
{
	return this.params;
}
ETSOOFlash.prototype.addVariable=function(name,value)
{
	this.variables[name]=value;
}
ETSOOFlash.prototype.getVariable=function(name)
{
	return this.variables[name];
}
ETSOOFlash.prototype.createParamTag=function(n,v)
{
	var p=document.createElement('param');
	p.setAttribute('name',n);
	p.setAttribute('value',v);
	return p;
}
ETSOOFlash.prototype.getVariables=function()
{
	return this.variables;
}
ETSOOFlash.prototype.getVariablePairs=function()
{
	var variablePairs=new Array();
	var key;
	var variables=this.getVariables();
	for(key in variables)
	{
		variablePairs.push(key+"="+variables[key]);
	}
	return variablePairs;
}
ETSOOFlash.prototype.getFlashHTML=function()
{
	var flashNode="";
	if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length)
	{
		if(this.getAttribute("doExpressInstall"))this.addVariable("MMplayerType","PlugIn");
		flashNode='<embed type="application/x-shockwave-flash" src="'+this.getAttribute('swf')+'" width="'+this.getAttribute('width')+'" height="'+this.getAttribute('height')+'"';
		flashNode+=' id="'+this.getAttribute('id')+'" name="'+this.getAttribute('id')+'" ';
		var params=this.getParams();
		for(var key in params)
		{
			flashNode+=[key]+'="'+params[key]+'" ';
		}
		var pairs=this.getVariablePairs().join("&");
		if(pairs.length>0)
		{
			flashNode+='flashvars="'+pairs+'"';
		}
		flashNode+='/>'
	}
	else
	{
		if(this.getAttribute("doExpressInstall"))this.addVariable("MMplayerType","ActiveX");
		flashNode='<object id="'+this.getAttribute('id')+'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+this.getAttribute('width')+'" height="'+this.getAttribute('height')+'">';
		flashNode+='<param name="movie" value="'+this.getAttribute('swf')+'" />';
		var params=this.getParams();
		for(var key in params)
		{
			flashNode+='<param name="'+key+'" value="'+params[key]+'" />';
		}
		var pairs=this.getVariablePairs().join("&");
		if(pairs.length>0)
		{
			flashNode+='<param name="flashvars" value="'+pairs+'" />';
		}
		flashNode+="</object>";
	}
	return flashNode;
}
ETSOOFlash.prototype.write=function(elementId)
{
	if(this.useExpressInstall)
	{
		var expressInstallReqVer=new this.PlayerVersion([6,0,65]);
		if(this.installedVer.isValid(expressInstallReqVer)&&!this.installedVer.isValid(this.getAttribute('version')))
		{
			this.setAttribute('doExpressInstall',true);
			this.addVariable("MMredirectURL",escape(this.getAttribute('xiRedirectUrl')));
			document.title=document.title.slice(0,47)+" - Flash Player Installation";
			this.addVariable("MMdoctitle",document.title);
		}
	}
	else
	{
		this.setAttribute('doExpressInstall',false)
	}
	if(this.skipDetect||this.getAttribute('doExpressInstall')||this.installedVer.isValid(this.getAttribute('version')))
	{
		var n=(typeof elementId=='string')?document.getElementById(elementId):elementId;
		if(n==null)document.write(this.getFlashHTML());
		else n.innerHTML=this.getFlashHTML();
	}
	else
	{
		if(this.getAttribute('redirectUrl')!="")
		{
			document.location.replace(this.getAttribute('redirectUrl'));
		}
	}
}
