//------------------------------------------------------------------------------------
//THE FOLLOWING CODE IS A RESTRUCTURED VERSION OF ADOBE'S CLIENT-SIDE FLASH 
//DETECTION KIT DESIGNED TO WORK WITH THE PAGE FRAMEWORK and
//--------------------------------------------------------------------------
// Flash Player Version Detection - Rev 1.6
// Detect Client Browser type
// Copyright(c) 2005-2006 Adobe Macromedia Software, LLC. All rights reserved.
if (Page.flash == null)
{
	//alert('INIT: FLASH');

	var __FLASH__ = 
	{
		isIE: ((navigator.appVersion.indexOf("MSIE") != -1) ? true : false),
		isWin: ((navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false),
		isOpera: ((navigator.userAgent.indexOf("Opera") != -1) ? true : false),
	
		ControlVersion: function()
		{
			var version;
			var axo;
			var e;
				
			try 
			{
				axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
				version = axo.GetVariable("$version");
			} 
			catch (e) {}
		
			if (!version)
			{
				try 
				{
					axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
					version = "WIN 6,0,21,0";
					axo.AllowScriptAccess = "always";
					version = axo.GetVariable("$version");
				} 
				catch (e) {}
			}
		
			if (!version)
			{
				try 
				{
					axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
					version = axo.GetVariable("$version");
				} 
				catch (e) {}
			}
		
			if (!version)
			{
				try 
				{
					axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
					version = "WIN 3,0,18,0";
				} 
				catch (e) {}
			}
		
			if (!version)
			{
				try {
					axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
					version = "WIN 2,0,0,11";
				} 
				catch (e) 
				{
					version = -1;
				}
			}
			
			return version;
		},
		
		// JavaScript helper required to detect Flash Player PlugIn version information
		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];
					var versionRevision = descArray[3];
					if (versionRevision == "") 
					{
						versionRevision = descArray[4];
					}
					if (versionRevision[0] == "d") 
					{
						versionRevision = versionRevision.substring(1);
					} 
					else if (versionRevision[0] == "r") 
					{
						versionRevision = versionRevision.substring(1);
						if (versionRevision.indexOf("d") > 0) 
						{
							versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
						}
					}
					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 ( this.isIE && this.isWin && !this.isOpera ) 
			{
				flashVer = this.ControlVersion();
			}	
			return flashVer;
		},
		
		// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
		DetectFlashVer: function(reqMajorVer, reqMinorVer, reqRevision)
		{
			versionStr = this.GetSwfVer();
			if (versionStr == -1 ) 
			{
				return false;
			} 
			else if (versionStr != 0) 
			{
				if(this.isIE && this.isWin && !this.isOpera) 
				{
					// Given "WIN 2,0,0,11"
					tempArray         = versionStr.split(" "); 	// ["WIN", "2,0,0,11"]
					tempString        = tempArray[1];			// "2,0,0,11"
					versionArray      = tempString.split(",");	// ['2', '0', '0', '11']
				} 
				else 
				{
					versionArray      = versionStr.split(".");
				}
				var versionMajor      = versionArray[0];
				var versionMinor      = versionArray[1];
				var versionRevision   = versionArray[2];
		
					// is the major.revision >= requested major.revision AND the minor version >= requested minor
				if (versionMajor > parseFloat(reqMajorVer)) 
				{
					return true;
				} 
				else if (versionMajor == parseFloat(reqMajorVer)) 
				{
					if (versionMinor > parseFloat(reqMinorVer))
						return true;
					else if (versionMinor == parseFloat(reqMinorVer)) 
					{
						if (versionRevision >= parseFloat(reqRevision))
							return true;
					}
				}
				return false;
			}
	},
	
		AC_AddExtension: function(src, ext)
		{
		  if (src.indexOf('?') != -1)
			 return src.replace(/\?/, ext+'?'); 
		  else
			 return src + ext;
		},
	
		AC_Generateobj: function(objAttrs, params, embedAttrs, element) 
		{ 
			 var str = '';
			 if (this.isIE && this.isWin && !this.isOpera)
			 {
				str += '<object ';
				for (var i in objAttrs)
					str += i + '="' + objAttrs[i] + '" ';
				for (var i in params)
					str += '><param name="' + i + '" value="' + params[i] + '" /> ';
				str += '></object>';
			 } 
			 else
			 {
				str += '<embed ';
				for (var i in embedAttrs)
					str += i + '="' + embedAttrs[i] + '" ';
				str += '>';
			 }
		
			 if (element != null)
				element.innerHTML = str;
			 else
				document.write(str);
		},	
			
		AC_FL_RunContent: function(fp,element)
		{
		  var ret = 
			 this.AC_GetArgs
			 (  fp, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
			  , "application/x-shockwave-flash"
			 );
		  this.AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs, element );
		},
	
		AC_GetArgs: function (args, ext, srcParamName, classid, mimeType)
		{
		  var ret = new Object();
		  ret.embedAttrs = new Object();
		  ret.params = new Object();
		  ret.objAttrs = new Object();
		  
		  //passing args as an array, not as 'args'
		  //args = args[0];
		  
		  for (var i=0; i < args.length; i=i+2)
		  {
			 //alert(args[i]);
			 var currArg = args[i].toLowerCase();    
		
			 switch (currArg)
			 {	
				case "classid":
				  break;
				case "pluginspage":
				  ret.embedAttrs[args[i]] = args[i+1];
				  break;
				case "src":
				case "movie":	
				  args[i+1] = this.AC_AddExtension(args[i+1], ext);
				  ret.embedAttrs["src"] = args[i+1];
				  ret.params[srcParamName] = args[i+1];
				  break;
				case "onafterupdate":
				case "onbeforeupdate":
				case "onblur":
				case "oncellchange":
				case "onclick":
				case "ondblClick":
				case "ondrag":
				case "ondragend":
				case "ondragenter":
				case "ondragleave":
				case "ondragover":
				case "ondrop":
				case "onfinish":
				case "onfocus":
				case "onhelp":
				case "onmousedown":
				case "onmouseup":
				case "onmouseover":
				case "onmousemove":
				case "onmouseout":
				case "onkeypress":
				case "onkeydown":
				case "onkeyup":
				case "onload":
				case "onlosecapture":
				case "onpropertychange":
				case "onreadystatechange":
				case "onrowsdelete":
				case "onrowenter":
				case "onrowexit":
				case "onrowsinserted":
				case "onstart":
				case "onscroll":
				case "onbeforeeditfocus":
				case "onactivate":
				case "onbeforedeactivate":
				case "ondeactivate":
				case "type":
				case "codebase":
				  ret.objAttrs[args[i]] = args[i+1];
				  break;
				case "id":
				case "width":
				case "height":
				case "align":
				case "vspace": 
				case "hspace":
				case "class":
				case "title":
				case "accesskey":
				case "name":
				case "tabindex":
				  ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
				  break;
				case "flashvars":
				  ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1].replace(/,/g,'&');
				  break;
				default:
				  ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
			 }
		  }
		  ret.objAttrs["classid"] = classid;
		  if (mimeType) ret.embedAttrs["type"] = mimeType;
		  return ret;
		},
		
		output: function(major,minor,revision,flashParams,alternateContent,element,expressInstall)
		{		
			if (expressInstall == null)
				expressInstall = false;
				
			if (Page.isString(element))
				element = $(element);
			
	
			// Version check based upon the values passed in params
			var hasReqestedVersion = this.DetectFlashVer(major, minor, revision);
	
			if (hasReqestedVersion) {
				// if we've detected an acceptable version
				// embed the Flash Content SWF when all tests are passed
				this.AC_FL_RunContent(flashParams,element);
			}
			else
			{
				var hasProductInstall = this.DetectFlashVer(6, 0, 65);			
				if (expressInstall && hasProductInstall)
				{
					var MMPlayerType = (isIE == true) ? "ActiveX" : "PlugIn";
					var MMredirectURL = window.location;
					document.title = document.title.slice(0, 47) + " - Flash Player Installation";
					var MMdoctitle = document.title;
					 
					var installParams = [ "src", "/playerProductInstall",
										 "width", flashParams['width'],
										 "height", flashParams['height'],
										 "align", "middle",
										 "id", flashParams['id'],
										 "quality", "best",
										 "wmode","opaque",
										 "FlashVars", "MMredirectURL="+MMredirectURL+'&MMplayerType='+MMPlayerType+'&MMdoctitle='+MMdoctitle+"",
										 "bgcolor", flashParams['bgcolor'],
										 "name", flashParams['name'],
										 "allowScriptAccess","sameDomain",
										 "type", "application/x-shockwave-flash",
										 "pluginspage", "http://www.adobe.com/go/getflashplayer" ];
	
					this.AC_FL_RunContent(installParams,element);
				}
				else
				{
					// flash is too old or we can't detect the plugin
					if (element != null)
						element.innerHTML = alternateContent;
					else
						document.write(alternateContent);
				}
			}
		}	
	};
	
	Page.extend({flash:__FLASH__});
}
