// v 1.3
var flashoralt = {
	
	paramName:String = "minplayerversion",
	className:String = "flashaltern",
	idBase:String = "altern",
	
	
	init:function(){
		
		function checkObjects(){
			
			var objects = document.getElementsByTagName("object");
			var params = document.getElementsByTagName("param");
			var i, j, version, success, altern, container;
			
			for(i=0; i<objects.length; i++){
				for(j=0; j<params.length; j++){
					if(params[j].name == flashoralt.paramName && params[j].parentNode == objects[i]){
						
						version = params[j].value.split(".");
						success = flashoralt.versionCheck(flashoralt.parseInt(version[0]), flashoralt.parseInt(version[1]), flashoralt.parseInt(version[2]));
						
						if(!success){
							altern = objects[i].innerHTML;
							container = document.createElement("span");
							container.setAttribute("id", flashoralt.idBase+i);
							container.setAttribute("class", flashoralt.className+i);							
							objects[i].parentNode.insertBefore(container, objects[i]);
							document.getElementById("altern"+i).innerHTML = altern;
							objects[i].style.display = 'none';
							
							// W/A for Safari/Konqueror/Chrome						
							objects[i].style.position = 'absolute';
							objects[i].style.left = '-10000px';
							
						}
						break;						
					}					
				}
			}
		}
		
		flashoralt.addEvent(window, "load", checkObjects);		
		
	},	
	
	
	versionCheck:function(reqMajorVer, reqMinorVer, reqRevision){
		
		// Based on: Flash Player Detection Kit
		// http://www.adobe.com/products/flashplayer/download/detection_kit/
		 
		// Flash Player Version Detection - Rev 1.6
		// Detect Client Browser type
		// Copyright(c) 2005-2006 Adobe Macromedia Software, LLC. All rights reserved.
		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;
		function ControlVersion()
		{
			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;
		}
		// JavaScript helper required to detect Flash Player PlugIn version information
		function GetSwfVer(){
			// 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 ( isIE && isWin && !isOpera ) {
				flashVer = ControlVersion();
			}	
			return flashVer;
		}
		// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
		function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
		{
			versionStr = GetSwfVer();
			if (versionStr == -1 ) {
				return false;
			} else if (versionStr != 0) {
				if(isIE && isWin && !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;
			}
		}
		
		return DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision);		
		
	},
		
	addEvent:function(obj, evType, fn){
	  if(obj.addEventListener) {
		  obj.addEventListener(evType,fn,true);
			return true;
		} else if(obj.attachEvent) {
		  var r = obj.attachEvent("on"+evType,fn);
			return r;
		}
	  return false;
	},

	parseInt:function(value){
		var intval = parseInt(value);
		return 	isNaN(intval) ? 0 : intval;
	}		
}


flashoralt.init();
