		/**
		 * SWFObject v1.4.4: Flash Player detection and embed - http://blog.deconcept.com/swfobject/
		 *
		 * SWFObject is (c) 2006 Geoff Stearns and is released under the MIT License:
		 * http://www.opensource.org/licenses/mit-license.php
		 *
		 * **SWFObject is the SWF embed script formerly known as FlashObject. The name was changed for
		 *   legal reasons.
		 */
		if(typeof deconcept == "undefined") var deconcept = new Object();
		if(typeof deconcept.util == "undefined") deconcept.util = new Object();
		if(typeof deconcept.SWFObjectUtil == "undefined") deconcept.SWFObjectUtil = new Object();
		deconcept.SWFObject = function(swf, id, w, h, ver, c, useExpressInstall, quality, xiRedirectUrl, redirectUrl, detectKey){
			if (!document.getElementById) { return; }
			this.DETECT_KEY = detectKey ? detectKey : 'detectflash';
			this.skipDetect = deconcept.util.getRequestParameter(this.DETECT_KEY);
			this.params = new Object();
			this.variables = new Object();
			this.attributes = new Array();
			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 deconcept.PlayerVersion(ver.toString().split("."))); }
			this.installedVer = deconcept.SWFObjectUtil.getPlayerVersion();
			if(c) { this.addParam('bgcolor', c); }
			var q = quality ? quality : 'high';
			this.addParam('quality', q);
			this.setAttribute('useExpressInstall', useExpressInstall);
			this.setAttribute('doExpressInstall', false);
			var xir = (xiRedirectUrl) ? xiRedirectUrl : window.location;
			this.setAttribute('xiRedirectUrl', xir);
			this.setAttribute('redirectUrl', '');
			if(redirectUrl) { this.setAttribute('redirectUrl', redirectUrl); }
		}
		deconcept.SWFObject.prototype = {
			setAttribute: function(name, value){
				this.attributes[name] = value;
			},
			getAttribute: function(name){
				return this.attributes[name];
			},
			addParam: function(name, value){
				this.params[name] = value;
			},
			getParams: function(){
				return this.params;
			},
			addVariable: function(name, value){
				this.variables[name] = value;
			},
			getVariable: function(name){
				return this.variables[name];
			},
			getVariables: function(){
				return this.variables;
			},
			getVariablePairs: function(){
				var variablePairs = new Array();
				var key;
				var variables = this.getVariables();
				for(key in variables){
					variablePairs.push(key +"="+ variables[key]);
				}
				return variablePairs;
			},
			getSWFHTML: function() {
				var swfNode = "";
				if (navigator.plugins && navigator.mimeTypes && navigator.mimeTypes.length) { // netscape plugin architecture
					if (this.getAttribute("doExpressInstall")) { this.addVariable("MMplayerType", "PlugIn"); }
					swfNode = '<embed type="application/x-shockwave-flash" src="'+ this.getAttribute('swf') +'" width="'+ this.getAttribute('width') +'" height="'+ this.getAttribute('height') +'"';
					swfNode += ' id="'+ this.getAttribute('id') +'" name="'+ this.getAttribute('id') +'" ';
					var params = this.getParams();
					 for(var key in params){ swfNode += [key] +'="'+ params[key] +'" '; }
					var pairs = this.getVariablePairs().join("&");
					 if (pairs.length > 0){ swfNode += 'flashvars="'+ pairs +'"'; }
					swfNode += '/>';
				} else { // PC IE
					if (this.getAttribute("doExpressInstall")) { this.addVariable("MMplayerType", "ActiveX"); }
					swfNode = '<object id="'+ this.getAttribute('id') +'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+ this.getAttribute('width') +'" height="'+ this.getAttribute('height') +'">';
					swfNode += '<param name="movie" value="'+ this.getAttribute('swf') +'" />';
					var params = this.getParams();
					for(var key in params) {
					 swfNode += '<param name="'+ key +'" value="'+ params[key] +'" />';
					}
					var pairs = this.getVariablePairs().join("&");
					if(pairs.length > 0) {swfNode += '<param name="flashvars" value="'+ pairs +'" />';}
					swfNode += "</object>";
				}
				return swfNode;
			},
			write: function(elementId){
				if(this.getAttribute('useExpressInstall')) {
					// check to see if we need to do an express install
					var expressInstallReqVer = new deconcept.PlayerVersion([6,0,65]);
					if (this.installedVer.versionIsValid(expressInstallReqVer) && !this.installedVer.versionIsValid(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);
					}
				}
				if(this.skipDetect || this.getAttribute('doExpressInstall') || this.installedVer.versionIsValid(this.getAttribute('version'))){
					var n = (typeof elementId == 'string') ? document.getElementById(elementId) : elementId;
					n.innerHTML = this.getSWFHTML();
					return true;
				}else{
					if(this.getAttribute('redirectUrl') != "") {
						document.location.replace(this.getAttribute('redirectUrl'));
					}
				}
				return false;
			}
		}
		
		/* ---- detection functions ---- */
		deconcept.SWFObjectUtil.getPlayerVersion = function(){
			var PlayerVersion = new deconcept.PlayerVersion([0,0,0]);
			if(navigator.plugins && navigator.mimeTypes.length){
				var x = navigator.plugins["Shockwave Flash"];
				if(x && x.description) {
					PlayerVersion = new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/, "").replace(/(\s+r|\s+b[0-9]+)/, ".").split("."));
				}
			}else{
				// do minor version lookup in IE, but avoid fp6 crashing issues
				// see http://blog.deconcept.com/2006/01/11/getvariable-setvariable-crash-internet-explorer-flash-6/
				try{
					var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
				}catch(e){
					try {
						var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
						PlayerVersion = new deconcept.PlayerVersion([6,0,21]);
						axo.AllowScriptAccess = "always"; // throws if player version < 6.0.47 (thanks to Michael Williams @ Adobe for this code)
					} catch(e) {
						if (PlayerVersion.major == 6) {
							return PlayerVersion;
						}
					}
					try {
						axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
					} catch(e) {}
				}
				if (axo != null) {
					PlayerVersion = new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));
				}
			}
			return PlayerVersion;
		}
		deconcept.PlayerVersion = function(arrVersion){
			this.major = arrVersion[0] != null ? parseInt(arrVersion[0]) : 0;
			this.minor = arrVersion[1] != null ? parseInt(arrVersion[1]) : 0;
			this.rev = arrVersion[2] != null ? parseInt(arrVersion[2]) : 0;
		}
		deconcept.PlayerVersion.prototype.versionIsValid = 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;
		}
		/* ---- get value of query string param ---- */
		deconcept.util = {
			getRequestParameter: function(param) {
				var q = document.location.search || document.location.hash;
				if(q) {
					var pairs = q.substring(1).split("&");
					for (var i=0; i < pairs.length; i++) {
						if (pairs[i].substring(0, pairs[i].indexOf("=")) == param) {
							return pairs[i].substring((pairs[i].indexOf("=")+1));
						}
					}
				}
				return "";
			}
		}
		/* fix for video streaming bug */
		deconcept.SWFObjectUtil.cleanupSWFs = function() {
			if (window.opera || !document.all) return;
			var objects = document.getElementsByTagName("OBJECT");
			for (var i=0; i < objects.length; i++) {
				objects[i].style.display = 'none';
				for (var x in objects[i]) {
					if (typeof objects[i][x] == 'function') {
						objects[i][x] = function(){};
					}
				}
			}
		}
		// fixes bug in fp9 see http://blog.deconcept.com/2006/07/28/swfobject-143-released/
		deconcept.SWFObjectUtil.prepUnload = function() {
			__flash_unloadHandler = function(){};
			__flash_savedUnloadHandler = function(){};
			if (typeof window.onunload == 'function') {
				var oldUnload = window.onunload;
				window.onunload = function() {
					deconcept.SWFObjectUtil.cleanupSWFs();
					oldUnload();
				}
			} else {
				window.onunload = deconcept.SWFObjectUtil.cleanupSWFs;
			}
		}
		if (typeof window.onbeforeunload == 'function') {
			var oldBeforeUnload = window.onbeforeunload;
			window.onbeforeunload = function() {
				deconcept.SWFObjectUtil.prepUnload();
				oldBeforeUnload();
			}
		} else {
			window.onbeforeunload = deconcept.SWFObjectUtil.prepUnload;
		}
		/* add Array.push if needed (ie5) */
		if (Array.prototype.push == null) { Array.prototype.push = function(item) { this[this.length] = item; return this.length; }}
		
		/* add some aliases for ease of use/backwards compatibility */
		var getQueryParamValue = deconcept.util.getRequestParameter;
		var FlashObject = deconcept.SWFObject; // for legacy support
		var SWFObject = deconcept.SWFObject;

