	var UA = function()
	{
		var sUA = navigator.userAgent.toLowerCase();
		var oReturn =  {
			bIsWebKit : sUA.indexOf("applewebkit") > -1,
			bIsSafari : sUA.indexOf("safari") > -1,
			bIsKonq: navigator.product != null && navigator.product.toLowerCase().indexOf("konqueror") > -1,
			bIsOpera : sUA.indexOf("opera") > -1,
			bIsXML : document.contentType != null && document.contentType.indexOf("xml") > -1,
			bHasTransparencySupport : true,
			bUseDOM : true,
			nFlashVersion : null,
			nOperaVersion : null,
			nGeckoBuildDate : null,
			nWebKitVersion : null
		};
		
		oReturn.bIsKHTML = oReturn.bIsWebKit || oReturn.bIsKonq;
		oReturn.bIsGecko = !oReturn.bIsWebKit && navigator.product != null && navigator.product.toLowerCase() == "gecko";
		if(oReturn.bIsGecko){ oReturn.nGeckoBuildDate = new Number(sUA.match(/.*gecko\/(\d{8}).*/)[1]) };
		oReturn.bIsIE = sUA.indexOf("msie") > -1 && !oReturn.bIsOpera && !oReturn.bIsKHTML && !oReturn.bIsGecko;
		oReturn.bIsIEMac = oReturn.bIsIE && sUA.match(/.*mac.*/) != null;
		if(oReturn.bIsOpera){ oReturn.nOperaVersion = new Number(sUA.match(/.*opera(\s|\/)(\d+\.\d+)/)[2]) };
		if(oReturn.bIsIE || (oReturn.bIsOpera && oReturn.nOperaVersion < 7.6)){ oReturn.bUseDOM = false };
		if(oReturn.bIsWebKit){ oReturn.nWebKitVersion = new Number(sUA.match(/.*applewebkit\/(\d+).*/)[1]) };
		if(window.hasFlash && (!oReturn.bIsIE || oReturn.bIsIEMac)){ 
			var flashDescription = (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]).description;
			oReturn.nFlashVersion = parseInt(flashDescription.charAt(flashDescription.indexOf(".") - 1));
		};
		if(sUA.match(/.*(windows|mac).*/) == null || 
		oReturn.bIsIEMac || oReturn.bIsKonq || 
		(oReturn.bIsOpera && oReturn.nOperaVersion < 7.6) || 
		(oReturn.bIsSafari && oReturn.nFlashVersion < 7) ||
		(!oReturn.bIsSafari && oReturn.bIsWebKit && oReturn.nWebKitVersion < 124) || 
		(oReturn.bIsGecko && oReturn.nGeckoBuildDate < 20020523)){
			oReturn.bHasTransparencySupport = false;
		};

		if(!oReturn.bIsIEMac && !oReturn.bIsGecko && document.createElementNS){
			try {
				document.createElementNS("http://www.w3.org/1999/xhtml", "i").innerHTML = "";
			} catch(e){
				oReturn.bIsXML = true;
			};
		};
		
		oReturn.bUseInnerHTMLHack = oReturn.bIsKonq || (oReturn.bIsWebKit && oReturn.nWebKitVersion < 312) || oReturn.bIsIE;
		
		return oReturn;
	}();
	/*	If executed, the VBScript above checks for Flash and sets the hasFlash variable. 
		If VBScript is not supported it's value will still be undefined, so we'll run it though another test
		This will make sure even Opera identified as IE will be tested */
	var hasFlash = function()
	{
		var nRequiredVersion = 7;	
		
		if (navigator.appVersion.indexOf("MSIE") != -1 && navigator.appVersion.indexOf("Windows") > -1) {
			document.write('<script language="VBScript"\> \non error resume next \nhasFlash = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash." & ' + nRequiredVersion + '))) \n</script\> \n');
			if(window.hasFlash != null){
				return window.hasFlash;
			}
		}
		
		if (navigator.mimeTypes && navigator.mimeTypes["application/x-shockwave-flash"] && navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin) {
			var flashDescription = (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]).description;
			return parseInt(flashDescription.charAt(flashDescription.indexOf(".") - 1)) >= nRequiredVersion;
		}
		
		return false;
	}();

flash = {
	/*	IE5.x does not support document.getElementsByTagName("*")
		therefore we're falling back to element.all */
	getElementsByTagName : function(oParentNode, sTagName)
	{
		if(sTagName == "*" && oParentNode.all != null) {
			return oParentNode.all;
		}
		return oParentNode.getElementsByTagName(sTagName);
	},
	
	getElementsByClassName : function(srcElm, clName, dive)
	{
		if (document.getElementsByTagName) {
			this.srcElm = srcElm;
			this.clName = clName;
			this.dive = (dive) ? true : false;
			this.foundElements = [];
			this.allElements = this.srcElm.getElementsByTagName("*");
			
			for (var i = 0; i < this.allElements.length; i++) {
				if (this.allElements[i].className == this.clName) {
					if (this.dive) {
						if (this.allElements[i].parentNode == this.srcElm) {
							this.foundElements[this.foundElements.length] = this.allElements[i];
						}
					} else {
						this.foundElements[this.foundElements.length] = this.allElements[i];
					}
				}
			}
			return this.foundElements;
		} else {
			return [];
		}
	},
	
	getFlashMovieObject : function(movieName)
	{
		if (window.document[movieName]) {
			return window.document[movieName];
		}
		if (navigator.appName.indexOf("Microsoft Internet")==-1) {
			if (document.embeds && document.embeds[movieName])
				return document.embeds[movieName]; 
		}
		else // if (navigator.appName.indexOf("Microsoft Internet")!=-1)
		{
			return document.getElementById(movieName);
		}
	},
	
	init : function()
	{
		myHeader = document.getElementById("flashead");
		flash.insert(myHeader, "flashmap", 464, 200);
	},
	
	createObjectParameter : function(nodeObject, sName, sValue)
	{
		var node = document.createElement("param");
		
		node.setAttribute("name", sName);	
		node.setAttribute("value", sValue);
		nodeObject.appendChild(node);
	},
	
	insert : function(myElement, myId, myWidth, myHeight)
	{
		if(!UA.bUseDOM){
			myElement.innerHTML = ["<embed type=\"application/x-shockwave-flash\" src=\"flash/"+myId+".swf"+"\" quality=\"best\" wmode=\"Transparent\" bgcolor=\"White\" width=\""+myWidth+"\" height=\""+myHeight+"\" name=\"fl"+myId+"\"></embed>"].join("");
		} else {
			if (UA.bIsOpera) {
				nodeFlash = document.createElement("object");
				flash.createObjectParameter(nodeFlash, "movie", "flash/"+myId+".swf");
				flash.createObjectParameter(nodeFlash, "quality", "best");
				flash.createObjectParameter(nodeFlash, "wmode", "Transparent");
				flash.createObjectParameter(nodeFlash, "bgcolor", "#8AB7DF");
				nodeFlash.setAttribute("type", "application/x-shockwave-flash");
				nodeFlash.style.width = myWidth+"px";
				nodeFlash.style.height = myHeight+"px";
			} else {
				nodeFlash = document.createElement("embed");
				nodeFlash.setAttribute("name", "fl"+myId);
				nodeFlash.setAttribute("src", "flash/"+myId+".swf");
				nodeFlash.setAttribute("quality", "best");
				nodeFlash.setAttribute("wmode", "Transparent");
				nodeFlash.setAttribute("bgcolor", "#8AB7DF");
				nodeFlash.setAttribute("swliveconnect", "true");
				nodeFlash.setAttribute("pluginspace", "http://www.macromedia.com/go/getflashplayer");
			}
			nodeFlash.setAttribute("id", "fl"+myId);
			nodeFlash.setAttribute("scale", "noscale");
			nodeFlash.setAttribute("width", myWidth);
			nodeFlash.setAttribute("height", myHeight);
			
			myElement.appendChild(nodeFlash);
		}
	},
	
	enableAnimation : function(myElement)
	{
		if (!myElement || !myElement.tagName) {
			var e = evt.fix(myElement);
			myElement = e.target;
		}
		while (myElement.tagName.toLowerCase() != "div") {
			myElement = myElement.parentNode;
		}
		var myId = "fl"+myElement.id;
		var flashNode = flash.getFlashMovieObject(myId);
		
		if (!(!flashNode || flashNode == null))
			flashNode.SetVariable("/:hover", "true");
	},
	
	disableAnimation : function(myElement)
	{
		if (!myElement || !myElement.tagName) {
			var e = evt.fix(myElement);
			myElement = e.target;
		}
		while (myElement.tagName.toLowerCase() != "div") {
			myElement = myElement.parentNode;
		}
		var myId = "fl"+myElement.id;
		var flashNode = flash.getFlashMovieObject(myId);

		if (!(!flashNode || flashNode == null))
			flashNode.SetVariable("/:hover", "false");
	}

};

if (hasFlash)
	evt.add(window, "load", flash.init);
