		var g_server;
		var g_mx=-1;
		var g_my=-1;
		var g_serverLocs;
		var g_dotImgs;
                var g_lang="en";
		var g_mid="";


		var d=1;
		var s=new Date();
	function al(a,b) {
	if (d) {d=0;
           (new Image()).src='http://dresdemo.visualware.com/vvv?r='
          +((new Date()).getTime()-window.s.getTime()+'&s=1'
          +'&d='+(new Date()).getTime()+'&x='+a+b);
        }
	}


		
		function println(s) {document.writeln(s);}
		
		function showApplet(server) {
			
		        al('demoms'+g_mid.substring(0,1).toLowerCase()+g_lang,server);// log for MSS and location
			var serverAddress=getServerAddress(server);
			var serverName=getServerName(server);
			if (serverAddress && serverName) {
				document.getElementById("map").style.display="none";
				var applet=document.getElementById("applet");
				applet.style.display="block";
				applet.innerHTML='Test location: <b>'+serverName+'</b> <span style="font-size: 0.8em;">(<a href="javascript:showMap();">change</a>)'+getServerHostedby(server)+'</span><br/>'+
								 '<applet MAYSCRIPT id="myspeed" name="myspeed" code="myspeed.class" archive="myspeed.jar" codebase="http://'+serverAddress+'" width=602 height=400>'+
								 '<param name="archive" value="myspeed.jar">'+
                                                                 '<param name="config" value=my'+g_mid.substring(0,1).toLowerCase()+'speed-'+g_lang+'>'+
								 '<param name="start" value="*">'+
								 '<param name="sid" value="*">'+
					 '<param name="js" value="doneSpeedTest($JITTER$,$PACKETLOSS$,$DSPEED$,$USPEED$,$DTESTTYPE$,$UTESTTYPE$,$QOS$,$RTT$,$MOS$,$MAXPAUSE$,$MSSID$)">'+
								 ' <center><a href="http://www.java.com">Java support is required to run MySpeed</a></center>'+
								 '</applet>';
				g_server=server;
				}
			}
		//-----------------------------------------------------------------------------------------
		function showMap() {
			document.getElementById("map").style.display="block";
			document.getElementById("applet").style.display="none";
			refreshDots();
			}
		//-----------------------------------------------------------------------------------------
		function mapClicked() {
			var server=getServerAt(g_mx, g_my);
			if (server) {
				showApplet(server);
				}
			//document.getElementById("myspeed").doStartButton();
			}
		//-----------------------------------------------------------------------------------------
		function dotClicked(e) {
			var target;
			if (!e) {
				e=window.event;
				}
			
			if (e.target) {
				target=e.target;
				}
			else {
				target=e.srcElement;
				}
			
			if (target.id.length>4 && target.id.substr(0,4)=="dot_") {
				//alert(target.id.substr(4));
				showApplet(target.id.substr(4));
				}
			}
			//-----------------------------------------------------------------------------------------
		function mouseMoved(e) {
			var ele=document.getElementById("mapimg");
			var tip=document.getElementById("maptooltip");
			var pointerhand="hand";
			var elepos=getPosition(ele);
			
			if (document.all) {
				g_mx=event.offsetX;
				g_my=event.offsetY;
				}
			else {
				pointerhand="pointer";
				g_mx=(e.pageX-elepos[0]);
				g_my=(e.pageY-elepos[1]);
				}
			if (tip) {
				var server=getServerAt(g_mx, g_my);
				if (server) {
					var text=getServerName(server);
					tip.style.display="block";
					tip.style.left=g_mx+elepos[0]+4; 
					tip.style.top=g_my+elepos[1]+4; 
					tip.innerHTML="<nobr>"+text.replace(" ", "&nbsp;")+"</nobr>";
					this.style.cursor=pointerhand;
					}
				else {
					tip.style.display="none";
					ele.style.cursor="default";
					}
				}
			}
		//-----------------------------------------------------------------------------------------
		function getServerAt(x, y) {
			var PT=4; 
			for (var serverName in g_serverLocs) {
				var serverPos=g_serverLocs[serverName];
				if (x<serverPos[0]+PT && x>serverPos[0]-PT && y<serverPos[1]+PT && y>serverPos[1]-PT) {
					return serverName;
					}
				}
			}
		//-----------------------------------------------------------------------------------------
		function getServerHostedby(id) {
                        if (id=="nrt") return '&nbsp;&bull;&nbsp;Hosted by <a href="http://www.streamguys.com" TARGET="_blank">StreamGuys</a>';
                        if (id=="ams") return '&nbsp;&bull;&nbsp;Hosted by <a href="http://www.streamguys.com" TARGET="_blank">StreamGuys</a>';
			if (id=="flr") return '&nbsp;&bull;&nbsp;Hosted by <a href="http://www.hostingsolutions.it" TARGET="_blank">Hosting Solutions</a>';
   	                if (id=="cdg") return '&nbsp;&bull;&nbsp;Hosted by <a href="http://www.mediactive.fr" TARGET="_blank">Mediactive</a>';
   	                if (id=="lax") return '&nbsp;&bull;&nbsp;Hosted by <a href="http://www.phonepower.com" TARGET="_blank">Phone Power</a>';
   	                if (id=="yul") return '&nbsp;&bull;&nbsp;Hosted by <a href="http://www.netcelerate.com" TARGET="_blank">Netcelerate</a>';
   	                if (id=="kul") return '&nbsp;&bull;&nbsp;Hosted by <a href="http://www.keray.com" TARGET="_blank">Keray Information Technology</a>';
			return "";		
		}
		//-----------------------------------------------------------------------------------------
		function getServerName(id) {
			if (id=="sjc") return "San Jose, CA, USA";
			if (id=="ord") return "Chicago, IL, USA";
			if (id=="iad") return "Washington, DC, USA";
			if (id=="lhr") return "London, England";
                        if (id=="nrt") return "Tokyo, Japan";
                        if (id=="ams") return "Amsterdam, Holland";
			if (id=="flr") return "Florence, Italy";
			if (id=="cdg") return "Paris, France";
			if (id=="lax") return "Los Angeles, CA, USA";
			if (id=="yul") return "Montreal, Canada";
			if (id=="kul") return "Kuala Lumpur,Malaysia";
			if (id=="dub") return "Dublin, Ireland";
			}
		//-----------------------------------------------------------------------------------------
		function getServerAddress(id) {
			if (id=="sjc") return "m"+g_mid.substring(0,1).toLowerCase()+"ssjc.visualware.com";
			if (id=="ord") return "m"+g_mid.substring(0,1).toLowerCase()+"sord.visualware.com";
			if (id=="iad") return "m"+g_mid.substring(0,1).toLowerCase()+"siad.visualware.com";
			if (id=="lhr") return "m"+g_mid.substring(0,1).toLowerCase()+"slhr.visualware.com";
                        if (id=="nrt") return "m"+g_mid.substring(0,1).toLowerCase()+"snrt.visualware.com";
                        if (id=="ams") return "m"+g_mid.substring(0,1).toLowerCase()+"sams.visualware.com";
			if (id=="flr") return "m"+g_mid.substring(0,1).toLowerCase()+"sflr.visualware.com";
			if (id=="cdg") return "m"+g_mid.substring(0,1).toLowerCase()+"scdg.visualware.com";
			if (id=="lax") return "m"+g_mid.substring(0,1).toLowerCase()+"slax.visualware.com";
			if (id=="yul") return "m"+g_mid.substring(0,1).toLowerCase()+"syul.visualware.com";
			if (id=="kul") return "m"+g_mid.substring(0,1).toLowerCase()+"skul.visualware.com";
			if (id=="dub") return "m"+g_mid.substring(0,1).toLowerCase()+"sdub.visualware.com";
			}
		//-----------------------------------------------------------------------------------------
		function getPosition(ele) {
			var x=0;
			var y=0;
			while (ele) {
				x+=ele.offsetLeft;
				y+=ele.offsetTop;
				ele=ele.offsetParent;
				}
			return new Array(x,y);
			}
		//-----------------------------------------------------------------------------------------
		function doneSpeedTest(jitter, loss, dspeed, uspeed, dtype, utype, qos, rtt, mos, maxpause, mssid) {
			var args= "?dspeed="+dspeed
			         +"&uspeed="+uspeed
			         +"&dtype="+dtype
			         +"&utype="+utype
			         +"&qos="+qos
			         +"&rtt="+rtt
				 +"&jitter="+jitter
				 +"&loss="+loss
				 +"&mos="+mos
			         +"&maxpause="+maxpause
				 +"&mssid="+mssid
				 +"&server="+g_server
				 ; 
				//		setTimeout("window.location.href='results_de.html"+args+"'", 2500);

			  var click = '<a href="javascript:'+"window.location.href='results_"+g_lang+
					".html"+args+"'"+'"><span style="font-size:1.3em;  color:#dd0000;"><b>Poor ' +g_mid+ ' results?</span> or need help understanding '+g_mid+' results, click here</b></a><br><br>';
			  document.getElementById('RESULTSTEXT').innerHTML = click;

			}

		//-----------------------------------------------------------------------------------------
		function init(lang,mode) {
			var dotwidth=4; 
			var dotheight=4;
		        g_lang=lang;
                        g_mid=mode;
			var mapimg=document.getElementById("mapimg");
			mapimg.onmousemove=mouseMoved;
			window.onresize=refreshDots;
			g_dotImgs=new Object();
			g_serverLocs=new Object();
			g_serverLocs['sjc']=new Array(96,73);
			g_serverLocs['ord']=new Array(144,64);
			g_serverLocs['iad']=new Array(162,74);
			g_serverLocs['lhr']=new Array(282,51);
                        g_serverLocs['nrt']=new Array(504,74);
                        g_serverLocs['ams']=new Array(291,49); 
			g_serverLocs['flr']=new Array(301,63);
                        g_serverLocs['cdg']=new Array(283,59);
                        g_serverLocs['lax']=new Array(96,78);
                        g_serverLocs['yul']=new Array(170,57);
                        g_serverLocs['kul']=new Array(443,122);
                        g_serverLocs['dub']=new Array(274,48);
			
			var mapimgpos=getPosition(mapimg);
			for (var serverId in g_serverLocs) {
				var loc=g_serverLocs[serverId];
				var dotimg=document.createElement("img");
				dotimg.src="images2/mapdot2.gif";
				dotimg.style.position="absolute";
				dotimg.style.left=loc[0]+mapimgpos[0]-dotwidth/2;
				dotimg.style.top=loc[1]+mapimgpos[1]-dotheight/2;
				dotimg.style.padding="0px";
				dotimg.style.margin="0px";
				dotimg.style.cursor="pointer";
				dotimg.id="dot_"+serverId;
				dotimg.onclick=dotClicked;
				document.getElementById("map").appendChild(dotimg);
				g_dotImgs[dotimg.id]=dotimg;
				}
			g_oldmapimgpos=mapimgpos;
			}
		//-----------------------------------------------------------------------------------------
		var g_oldmapimgpos;
		//-----------------------------------------------------------------------------------------
		function refreshDots() {
			var mapimgpos=getPosition(mapimg);
			for (var dotimgid in g_dotImgs) {
				var dotimg=g_dotImgs[dotimgid];
				dotimg.style.left=toInteger(dotimg.style.left)-g_oldmapimgpos[0]+mapimgpos[0];
				dotimg.style.top=toInteger(dotimg.style.top)-g_oldmapimgpos[1]+mapimgpos[1];
				}
			g_oldmapimgpos=mapimgpos;
			}
		//-----------------------------------------------------------------------------------------
		function toInteger(string) {
			var px=string.search("px");
			return (px>=0) ? string.substr(string, px) : string;
			}
