<!--

var userid = '0';
var seriesid = '1';
var testid = '0';
var plz = '';
var ort = '';
var connectiontype1 = '';
var connectiontype2 = '';
var connectiontype3 = '';
var detail = '0';
var optimized = '';

var exturl = "www.cnlab.ch";

var counter = 0;
var jscounter = 0;

var CookieName = "performancetest_hsi";

try {
	if(document.cookie.indexOf(CookieName)!=-1) {
		decodeCookie();
	}
} catch (err) {}

function logerror(errpos, errstring)
{
	document.images["messid"].src="images/blank.gif?error="+errpos+"_"+escape(errstring);
}

function changeLanguage(language_str)
{
	try {
		window.location = path + "?language="+language_str;
	} catch (err) {
		logerror("changelang",err);
	}
}

function openAnalysis()
{
	try {
		window.open("http://"+exturl+"/speedtest/Controller?page=UserReport&language="+language+"&userid="+getUserId(),"results");
	} catch (err) {
		logerror("openanalysis",err);
	}
}

function openTroubleTicket() 
{
	try {
		window.open("http://"+exturl+"/speedtest/Controller?page=feedback_entrypage&language="+language+"&userid="+getUserId(),"feedback");
	} catch (err) {
		logerror("openticket",err);
	}
}

function openAbout()
{
	try {
		window.open("http://"+exturl+"/speedtest/about.jsp?language="+language,"about");
	} catch (err) {
		logerror("openabout",err);
	}
}

function openFAQ()
{
	try {
		window.open("http://"+exturl+"/speedtest/faq.jsp?language="+language,"faq");
	} catch (err) {
		logerror("openfaq",err);
	}
}

function deleteResults()
{
	try {
		if(confirm(newseries[eval(language)])) {
			seriesid++;
			testid='0';
			createCookie();
			loadUserPreferences();
			resetResults();
			setCnlabUserData();
		}
	} catch (err) {
		logerror("deleteresults",err);
	}
}

function loadPerformanceApplet()
{
	try {
		if(document.cookie.indexOf(CookieName)!=-1) {
			decodeCookie();
		} else {
			expires = new Date();
			userid = expires.getTime();
			createCookie();
			getUserDataFromCnlab();
		}
	} catch (err) {
		logerror("loadperfapplet",err);
	}
	try {
		logerror("loadperformanceapplet","ok");
	} catch (err) {}
}

function decodeCookie() {
	try {
		var cookievalue = '';
		var prefix = CookieName + "=";
	  var begin = document.cookie.indexOf("; " + prefix);
	  if (begin == -1) {
	          begin = document.cookie.indexOf(prefix);
	          if (begin != 0) return null;
	  } else {
	          begin += 2;
	  }
	  var end = document.cookie.indexOf(";", begin);
	  if (end == -1) {
	          end = document.cookie.length;
	  }
	  cookievalue = document.cookie.substring(begin + prefix.length, end);
	  
	  userid=decodeValue(cookievalue,"userid");
	  seriesid=decodeValue(cookievalue,"seriesid");
	  testid=decodeValue(cookievalue,"testid");
	  plz=decodeValue(cookievalue,"plz");
	  ort=decodeValue(cookievalue,"ort");
	  if (decodeValue(cookievalue,"country").length>0) {
	  	country=decodeValue(cookievalue,"country");
	  }
	  if (decodeValue(cookievalue,"language").length>0) {
	  	language=decodeValue(cookievalue,"language").toLowerCase();
	  	if (language.length<2) {
	  		language="en";
	  	}
	  }
	  connectiontype1=decodeValue(cookievalue,"connectiontype1");
	  connectiontype2=decodeValue(cookievalue,"connectiontype2");
	  connectiontype3=decodeValue(cookievalue,"connectiontype3");
	  detail=decodeValue(cookievalue,"detail");
	  optimized=decodeValue(cookievalue,"optimized");
	  if (document.URL.indexOf("language=")!=-1) {
			var querystring = document.URL.substr((document.URL.indexOf("language=")+9));
			if (language != querystring.substr(0, 2)) {
				// Language changed
				language = querystring.substr(0, 2);
				if (language.length<2) {
	  			language="en";
	  		}
				createCookie();
			}
		}
		// Something went wrong if userid is empty create a new cookie with data from cnlab
		if (userid.length==0 || userid=='0' || userid==0) {
			expires = new Date();
			userid = expires.getTime();
			createCookie();
			getUserDataFromCnlab();
		}
	} catch (err) {
		logerror("decodecookie",err);
	}
}

function decodeValue(text, searchstring) {
	try {
		var varvalue='';
		var begin=-1;
		var end=-1;
		
		text=String(text);
		searchstring=searchstring+"=";
		
		if ((begin=text.indexOf(searchstring))>=0) {
	  	varvalue = text.substring(begin+searchstring.length);
	  	if ((end=varvalue.indexOf("|"))>=0) {
	  		varvalue=varvalue.substring(0,end);
	  	}
	  	varvalue=unescape(varvalue);
	 	}
	} catch (err) {
		logerror("decodevalue",err);
	}
	return varvalue;
}

function createCookie() {
	try {
		expires = new Date();
		expires.setTime(new Date().getTime()+1000*60*60*24*3000);
		document.cookie = CookieName+"=userid="+escape(userid)+"|seriesid="+escape(seriesid)+"|testid="+escape(testid)+"|plz="+escape(plz)+"|ort="+escape(ort)+"|country="+escape(country)+"|language="+escape(language)+"|connectiontype1="+escape(connectiontype1)+"|connectiontype2="+escape(connectiontype2)+"|connectiontype3="+escape(connectiontype3)+"|detail="+escape(detail)+"|optimized="+escape(optimized)+"; expires="+expires.toGMTString()+"; path=/";	
	} catch (err) {
		logerror("ccreatecookie",err);
	}
}

function getUserDataFromCnlab() {
	try {
		if (exturl.indexOf("www.cnlab.ch")!=-1) {
			var headID = document.getElementsByTagName("head")[0];
			var newScript = document.createElement('script');
			newScript.type = 'text/javascript';
			newScript.src = 'http://www.cnlab.ch/speedtest/getUserData.jsp?server='+server;
			headID.appendChild(newScript);
		}
	} catch (err) {
		logerror("getcnlabdata",err);
	}
}

function cnlabCookieReady() {
	try {
		if (document.URL.indexOf("language=")!=-1) {
			var querystring = document.URL.substr((document.URL.indexOf("language=")+9));
			language = querystring.substr(0, 2);
			if (language.length<2) {
				language="en";
			}
		}
		language=language.toLowerCase();
		createCookie();
	} catch (err) {
		logerror("cnlabcookie",err);
	}
}

function setCnlabUserData() {
	try {
		if (exturl.indexOf("www.cnlab.ch")!=-1) {
			var headID = document.getElementsByTagName("head")[0];
			var newScript = document.createElement('script');
			newScript.type = 'text/javascript';
			var urlstr = "http://www.cnlab.ch/speedtest/setUserData.jsp?userid="+escape(userid)+"&seriesid="+escape(seriesid)+"&plz="+escape(plz)+"&ort="+escape(ort)+"&country="+escape(country)+"&language="+escape(language)+"&connectiontype1="+escape(connectiontype1)+"&connectiontype2="+escape(connectiontype2)+"&connectiontype3="+escape(connectiontype3)+"&optimized="+escape(optimized);
			newScript.src = urlstr;
			headID.appendChild(newScript);
		}
	} catch (err) {
		logerror("setcnlabdata",err);
	}
}

function resetResults() {
	try {
		if(checkJavaEnabled() && checkJavaVersion()==1) {
			document.applets["performancetest"].resetResults();
		}
	} catch (err) {
		logerror("resetresults",err);
	}
}

function loadUserPreferences()
{
	jscounter++;	
	try {
		logerror("loaduserprefscountstart","counter:"+jscounter);
		var logtext = "";
		logtext+="_1_";
		if(checkJavaEnabled() && checkJavaVersion()==1) {
			logtext+="_2_";
			var prefs = "userid="+escape(userid)+"|seriesid="+escape(seriesid)+"|testid="+escape(testid)+"|plz="+escape(plz)+"|ort="+escape(ort)+"|country="+escape(country)+"|language="+escape(language)+"|connectiontype1="+escape(connectiontype1)+"|connectiontype2="+escape(connectiontype2)+"|connectiontype3="+escape(connectiontype3)+"|detail="+escape(detail)+"|optimized="+escape(optimized)+"|browser="+escape(navigator.appName)+" "+escape(navigator.userAgent);
			logtext+="_3_"+prefs+"_";
			document.applets["performancetest"].setUserPreferences(prefs);
			logtext+="_4_";
		} else {
			logtext+="_5_";
		}
		logerror("loaduserprefscountend","counter_"+jscounter+","+logtext);
	} catch (err) {
		logerror("loaduserprefs",err);
	}
}

function saveUserPreferences()
{
	try {
		if(checkJavaEnabled() && checkJavaVersion()==1) {
			var prefs = document.applets["performancetest"].getUserPreferences();	
			new_userid=decodeValue(prefs,"userid");
		  new_seriesid=decodeValue(prefs,"seriesid");
		  new_testid=decodeValue(prefs,"testid");
		  new_plz=decodeValue(prefs,"plz");
		  new_ort=decodeValue(prefs,"ort");
		  new_country=decodeValue(prefs,"country");
		  new_language=decodeValue(prefs,"language").toLowerCase();
		  new_connectiontype1=decodeValue(prefs,"connectiontype1");
		  new_connectiontype2=decodeValue(prefs,"connectiontype2");
		  new_connectiontype3=decodeValue(prefs,"connectiontype3");
		  new_detail=decodeValue(prefs,"detail");
		  new_optimized=decodeValue(prefs,"optimized");
			var changed = 'false';
			if (userid!=new_userid || seriesid!=new_seriesid || plz!=new_plz || ort!=new_ort || country!=new_country || language!=new_language || connectiontype1!=new_connectiontype1 || connectiontype2!=new_connectiontype2 || connectiontype3!=new_connectiontype3 || detail!=new_detail || optimized!=new_optimized) {
				changed = 'true';
			}
			
			userid=new_userid;
		  seriesid=new_seriesid;
		  testid=new_testid;
		  plz=new_plz;
		  ort=new_ort;
		  country=new_country;
		  if (new_language.length>0) {
		  	language=new_language;
			}
		  connectiontype1=new_connectiontype1;
		  connectiontype2=new_connectiontype2;
		  connectiontype3=new_connectiontype3;
		  detail=new_detail;
		  optimized=new_optimized;
			
			createCookie();
			if (changed=='true') {
				// value within applet changed (exclude testid)
				setCnlabUserData();
			}
		}
	} catch (err) {
		logerror("saveuserpref",err);
	}
}

function getUserId()
{
	if (userid.length==0 || userid=='0' || userid==0) {
		try {
			if(checkJavaEnabled() && checkJavaVersion()==1) {
				userid = document.applets["performancetest"].getUserID();	
			}
		} catch (err) {
			alert("Error:"+err);
			logerror("userid0 / getuserid",err);
		}
	}
	return userid;
}

function checkJavaVersion()
{
	try {
		var major = 0;
		var minor = 0;
		
		try {
			major = document.applets["versioncheck"].getVersionMajor();
			minor = document.applets["versioncheck"].getVersionMinor();
		} catch (e) {
			//alert("Exception0");
		}
		
		if(parseInt(major)==0 && parseInt(minor)==0) {
			return 0;
		} else if(parseInt(major)==1 && parseInt(minor) >= 5) {
			return 1;
		} else {
			return -1;
		}
	} catch (err) {
		logerror("checkjava",err);
	}
	return 0;
}

function checkJavaEnabled()
{
	return ( navigator.javaEnabled() );
}

function loadJavaApplet()
{
	try {
		counter++;
		if(checkJavaEnabled()) {
			if (checkJavaVersion()==1) {
				$('applet_area_wait').style.display = "none";
				$('applet_area_applet').style.display = "";
			} else if (checkJavaVersion()==-1 || counter>10) {
				// Print message wrong java version
				var message = "";
				message += '<div style="background-color:yellow; width:800;" align="center" valign="center">';
		
				if(language.toUpperCase() == 'DE') {
					var text = 'Ihr Browser unterstützt keine Java Version 5 oder 6 Applets. Bitte installieren/aktualisieren sie die Java Runtime von: <a target="_new" href="http://java.com/de/download/index.jsp">java.com</a>';
				} else if(language.toUpperCase() == 'IT') {
					var text = 'Il vostro browser non supporta le applets di Java versione 5/6. Per favore attualizzate o installate la versione piu recente di Java Runtime da: <a target="_new" href="http://java.com/it/download/index.jsp">java.com</a>';
				} else if(language.toUpperCase() == 'FR') {
					var text = 'Votre navigateur Web ne supporte pas la version 5 ou 6 de Java. S.v.p. installez/actualisez Java Runtime: <a target="_new" href="http://java.com/fr/download/index.jsp">java.com</a>';
				} else {
					var text = 'Your browser doesn\'t support Java Version 5 or 6 applets. Please install/update the java runtime from: <a target="_new" href="http://java.com/en/download/index.jsp">java.com</a>';
				}
				message += '<b>'+text+'</b>';
				
				try {
					message += '<br>Java-Version: '+document.applets["versioncheck"].getVersion();
					message += '<img src="images/blank.gif?jversion='+document.applets["versioncheck"].getVersion()+'" width="1" height="1">';
				} catch (e) {
					//alert("Exception1");
				}
				message += '</div><br/>';
				$('applet_area_wait').innerHTML = message;
			} else {
				// not yet ready. try again in 1 second
				setTimeout("loadJavaApplet()",1000);
			}
		} else {
			// Print message to activate java
			var message = "";
			message += '<div style="background-color:yellow; width:800;" align="center" valign="center">';
			
			if(language.toUpperCase() == 'DE') {
				var text = 'Java ist nicht installiert oder deaktiviert. Bitte installieren Sie die Java Runtime von: <a target="_new" href="http://java.com/de/download/index.jsp">java.com</a> oder aktivieren Sie Java in Ihren Browser Einstellungen.';
			} else if(language.toUpperCase() == 'IT') {
				var text = 'Java é disattivato. Per favore installate la versione piu recente di Java Runtime da: <a target="_new" href="http://java.com/it/download/index.jsp">java.com</a> o attivatelo nelle impostazioni del vostro browser.';
			} else if(language.toUpperCase() == 'FR') {
				var text = 'Java est désactivé. S.v.p. installez Java Runtime: <a target="_new" href="http://java.com/fr/download/index.jsp">java.com</a> ou activer Java dans votre navigateur Web.';
			} else {
				var text = 'Java is not installed or disabled. Please install the java runtime from : <a target="_new" href="http://java.com/en/download/index.jsp">java.com</a> or active it in your browser configuration.';
			}
			message += '<b>'+text+'</b>';
			
			try {
				message += '<img src="images/blank.gif?error=javadisabled" width="1" height="1">';
			} catch (e) {
			}
			try {
				message += '<img src="images/blank.gif?jversiondisabled='+document.applets["versioncheck"].getVersion()+'" width="1" height="1">';
			} catch (e) {
			}
			
			message += '</div><br/>';
			$('applet_area_wait').innerHTML = message;
		}
	} catch (err) {
		logerror("loadapplet",err);
	}
	try {
		logerror("loadjavaapplet","ok");
	} catch (err) {}
	return true;
}


-->
