var PCinfo =		'<div class="errorpccheck">PC met windows</div>Om gebruik te kunnen maken van de filmdienst is een PC met Windows nodig.<BR><BR>';
var IE =			'<div class="errorpccheck">Internet Explorer, Firefox of Opera</div>De website is geoptimaliseerd voor pc\'s met Internet Explorer, FireFox en Opera. Jij maakt gebruik van een andere browser. Het is mogelijk dat de diensten goed functioneren in andere browsers, wij kunnen dit echter niet garanderen.<BR><BR>Klik <A href="http://www.microsoft.com/windows/windowsmedia/download/default.asp?DispLang=nl" target=_blank>hier</A> om de laatste versie van <A href="http://www.microsoft.com/windows/windowsmedia/download/default.asp?DispLang=nl" target=_blank>Internet Explorer</a> te downloaden.<BR>Klik <A href="http://www.mozilla-europe.org/nl/products/firefox/" target=_blank>hier </A>om de laatste versie van <A href="http://www.mozilla-europe.org/nl/products/firefox/" target=_blank>Firefox</a> te downloaden. <BR>Klik <A href="http://www.opera.com/" target=_blank>hier</A> om de laatste versie van <A href="http://www.opera.com/" target=_blank>Opera</a> te downloaden.<BR><BR>';
var cookieInfo =	'<div class="errorpccheck">Acceptatie van cookies</div>Om gebruik te kunnen maken van de filmdienst is het noodzakelijk dat de PC cookies accepteert. Deze functie staat standaard aan. Mocht deze niet meer aan staan, doe dan het volgende: Klik op Internet-opties in het menu Extra in Internet Explorer. Verander de schuifregelaar op het tabblad Privacy van hoog naar normaal.<BR><BR>';
var ResolutionInfo ='<div class="errorpccheck">Scherm resolutie minimaal 1024 x 768</div>De website kan prima gebruikt worden bij een schermresolutie lager dan 1024 x 768, voor optimaal gebruik bevelen wij echter aan de resolutie van je monitor op minimaal 1024 x 768 te zetten. Je kunt dit aanpassen in het configuratiescherm -> beeldscherm -> instellingen<BR><BR>';
var WMP =			'<div class="errorpccheck">Windows Media Player 9 of hoger</div>Om gebruik te kunnen maken van de filmdienst heb je Windows Media Player 9 of hoger nodig. Klik <a href="http://www.microsoft.com/windows/windowsmedia/download/default.asp" target="_blank">hier</a> om de laatste Media Player te downloaden.<BR><BR>';
var WMPgeenIE =		'<div class="errorpccheck">Windows Media Player 9 of hoger / Geindividualiseerde Media Player / Bandbreedte > 450 Kbps</div>Deze checks zijn alleen uit te voeren met Internet Explorer. Jij maakt gebruik van een andere browser. Hierdoor kunnen deze checks niet uitgevoerd worden.<BR><BR>';
var WMPindInfo =	'<div class="errorpccheck">Geindividualiseerde Media Player</div>Om gebruik te kunnen maken van de filmdienst heb je een geindividualiseerde Media Player nodig. Deze beveiligingsupgrade van Microsoft vindt eenmalig automatisch plaats wanneer er een film is besteld en wordt gestart. Je hoeft hiervoor dus niets te doen. <a href="http://www.mejane.com/elements/mplayerdrmindv.wmv">Wil je deze upgrade toch alvast doen, klik dan hier en klik op OK/Yes om de upgrade uit te voeren</a>. Zodra de upgrade is uitgevoerd kan de Media Player worden gesloten. Let op: Gebruikers van Windows XP Media Center raden wij aan deze upgrade wel eerst te doen.<BR><BR>';
var NetInfo =		'<div class="errorpccheck">Bandbreedte > 450 Kbps</div>Om gebruik te kunnen maken van de filmdienst is een breedband internet verbinding nodig van tenminste 450 Kbps. Mocht de test aangeven dat de verbinding niet snel genoeg is terwijl hij dat wel zou moeten zijn, test dan nog een keer. Het kan gebeuren dat de verbinding net even niet goed was of dat er een ander programma gebruik maakte van de verbinding.<BR><BR>';
var geduld = 		'<span class="faqantwoorden">Een moment geduld aub... De test is nog niet afgelopen.</span>';

var testPlayUrl =	'mms://62.204.69.107/Storage3/speedtest450kbps.wmv?WMCache=0';

var errorCount = 0;
var nietaanbevolenCount = 0;
var disableSite = false;		// Set to true if site is not to be opened
var errors = "";

var txtOk =	'De PC voldoet aan alle voorwaarden om gebruik te kunnen maken van de filmdienst.<BR><BR>';
var txtError =	'<span class="justorange">Let op: De huidige instellingen van je PC komen <b>NIET</b> overeen met de aanbevolen configuratie. Voer eventueel de onderstaande toegelichte acties uit en doe de test opnieuw.</span><BR><BR>';
//var StartTestAgain = '<a href="#" onclick="window.location = \'/klantenservice/pccheck/autostart.html\'"><img src="/images/arrowpccheck2.gif" alt="Start PC-check" border="0" /></a>';
//var StartTestAgain = '<form name="tester" action="/klantenservice/pccheck/autostart.html" method="post"><input type="hidden" name="JS_SWITCH" value="JS_OFF"><input type="image"src="/images/arrowpccheck2.gif"></form>';

// Globals. Browser detection
var operaa = navigator.userAgent.indexOf('Opera')!=-1 ;
var ie = navigator.appName.indexOf('Microsoft')!=-1 && !operaa;
var ns = navigator.appName.indexOf('Netscape')!=-1 && !ie && !operaa;

// Flag set to true when playing media. We get events from WMP7 before testing playing media
var testPlayActive = false;

function setStOK(st) {
	window.onerror = showError;
	document.getElementById(st).className = 'pccheckdoneok';
}

// Trap error generated when trying to read window properties
function showError(msg, url, line) {
	alert("Error " + msg + " at line " + line);
}
  	
function setStErr(st) {
	document.getElementById(st).className = 'pccheckdonenotok';
	errorCount++;
}

function setStNoCheck(st) {
	document.getElementById(st).className = 'pccheckdonenotpossible';
	nietaanbevolenCount++;
}

function setStOKbut(st) {
	window.onerror = showError;
	document.getElementById(st).className = 'pccheckdoneokbut';
}

function nextTest(test, lbl) {	
	var oLbl = document.getElementById(lbl);

	if (lbl != '' && lbl != 'spResultButton') {
		if (oLbl != 'undefined') oLbl.className='pccheckactive';
	}

	window.setTimeout(test,60);
}

function startTesting() {
	document.getElementById('spResultTxt3').innerHTML = geduld;
	nextTest('testOS()', 'stPC');
}

function testOS() { //v1.0
  var hasWindows = navigator.platform.indexOf('Win')!=-1;

  if (hasWindows) {
 	setStOK('stPC');
	nextTest('testBrowser()', 'stIE');
// 	nextTest('testCookie()','stCookie');
  }else{
	disableSite = true;
	setStErr('stPC');
	document.getElementById('spResultTxt1').innerHTML = txtError;
	document.getElementById('spResultTxt2').innerHTML = PCinfo;
 	document.getElementById('spResultTxt3').style.display = "none";
 	document.getElementById('spResultTxt4').style.display = "block";
// 	document.getElementById('spResultTxt3').innerHTML = StartTestAgain;
  }
}

// Kontroll av browser
function testBrowser() {
	if (ie || operaa || ns) {
//		nextTest('testBrowserversion()','stIE');
		if (ie){
		document.getElementById('stIE').innerHTML = '<div style="padding-top:40px;">Internet explorer</div>';
		}
		if (operaa){
		document.getElementById('stIE').innerHTML = '<div style="padding-top:40px;">Opera</div>';
		}
		if (ns){
		document.getElementById('stIE').innerHTML = '<div style="padding-top:40px;">Firefox</div>';
		}
		setStOK('stIE');
		nextTest('testCookie()','stCookie');
	} 
	else{
		disableSite = true;
		setStOKbut('stIE');
		errors = errors + IE;
		nextTest('testCookie()','stCookie');
	}
}

// Kontroll av browserversion
function testBrowserversion(){
	//testmeddelande.innerHTML = "Kontrollerar browserversion";
				
	var version = navigator.appVersion;
	var msPos = version.indexOf('MSIE ');
	var versNr = parseInt(version.substring(msPos+5));
	var hasIE6 = (versNr >= 6.0);

	// Och här hårdkodar jag in att hasIE5 = true.
	//hasIE5 = true;
  if (hasIE6) {
		// maybe opera...
		if(navigator.mimeTypes.length > 0){
			disableSite = true;
			setStErr('stIE');
			errors = errors + IE;
		} 
		else {
//			var t=document.mimeType;
//			  if(t=='Firefox Document'){
//				m=' and your default browser is FireFox';
//			  }else if(t=='Opera'){
//				m=' and your default browser is Opera';
//			  } else {
//				m='IE is your default browser';
//			  }
//			  alert(m);
			
			setStOK('stIE');
		}
    } 
	else {
		disableSite = true;
		setStErr('stIE');
 		errors = errors + IE;
  }

 	nextTest('testCookie()','stCookie');
}

// kontroll av Cookie
function testCookie(){
	// Trap error generated when trying to read cookie
	window.onerror = testCookie_err;

	WriteCookie('test','test');
	if (ReadCookie('test') == null) {
		setStErr('stCookie');
		disableSite = true;
		errors = errors + cookieInfo;
	} else {
		setStOK('stCookie');
	}

//	nextTest('testMediaplayer()','stWMP');
	nextTest('checkResolution()','stReso');
}

function ReadCookie(name) {
	var start = document.cookie.indexOf(name + "=");

	if(start == -1) return null;
	 
	start = document.cookie.indexOf("=",start) + 1;
	var end = document.cookie.indexOf(";",start);

	if( end == -1 )	end = document.cookie.length;
	 
	var value = unescape(document.cookie.substring(start,end));

	return value;
}

function WriteCookie(name, value) {
	document.cookie = name + "=" + value;
}

// Trap error generated when trying to read / write cookie
function testCookie_err(msg, url, line) {
	disableSite = true;
	setStErr('stCookie');
	errors = errors + cookieInfo;
	nextTest('checkResolution()','stReso');
}

function checkResolution(){
	if ((screen.width>=1024) && (screen.height>=720)){
		setStOK('stReso');
	}
	else{
		disableSite = true;
		setStOKbut('stReso');
		errors = errors + ResolutionInfo;
	}
	
	nextTest('testMediaplayer()','stWMP');
	
}

// kontroll av mediaspelare
function testMediaplayer(){
	if (ie){
		// Trap error generated when checking wmp
		window.onerror = testMediaplayer_err;

		var fHasWMP7  = (WMP7.URL = "x");

		if (fHasWMP7) {
	
			if (parseInt(WMP7.versionInfo) >= 9) {
				setStOK('stWMP');
			} else {
				disableSite = true;
				setStErr('stWMP');
				errors = errors + WMP;
			}
		}else{
			disableSite = true;
			setStErr('stWMP');
			errors = errors + WMP;
		 }
	
		nextTest('checkWmpIndivid()','stWMPind');
	}
	else {
		disableSite = true;
		setStNoCheck('stWMP');
		setStNoCheck('stWMPind');
		setStNoCheck('stTestPlay');
		errors = errors + WMPgeenIE;
        aanbeveling  = "";
		aanbevelingimg  = "";
		aanbevelingspeed  = "";
		nextTest('endTest()','spResultButton');
	}
}

// Trap error generated when trying to read / write cookie
function testMediaplayer_err(msg, url, line) {
	disableSite = true;
  	setStErr('stWMP');
	nextTest('checkWmpIndivid()','stWMPind');
}

// kontroll av mediaspelare
function checkWmpIndivid(){
	// Trap errors if impossible to create netobj
	window.onerror = checkWmpIndivid_err;

	var drmVersion = '';
	//testmeddelande.innerHTML = 'Kollar DRM version.';
	
	var WMPindivid = false;

	if (netobj == 'undefined') {
// Force failure.
		drmVersion = '';
	} else {
		drmVersion = netobj.GetDRMSecurityVersion();
	}
	
	// alert('Drm ' + drmVersion);
		if (drmVersion != ''){
		var arDrmVersion1 = drmVersion.split('.', 2);
		var arDrmVersion2 = drmVersion.split('.', 4);
		
		var sDrmVersion =  arDrmVersion1.join('.');
		var drmMajorVersion = parseFloat(sDrmVersion);


		// Major version has to be greater than 2.2
		if (drmMajorVersion >= 2.2) {
			// Fourth version digit is set to 1 if individualized
			if (arDrmVersion2[3] == 1) WMPindivid = true;
		}
	} else {
		WMPindivid = false;
	}
	
  	if (WMPindivid) {
		setStOK('stWMPind');
	} else {
		disableSite = true;
		setStErr('stWMPind');
		errors = errors + WMPindInfo;
	}
	nextTest('testPlay()','stTestPlay');
}


// Trap error checking mediaplayer
function checkWmpIndivid_err(msg, url, line) {
	//alert('Err: ' + msg);
	disableSite = true;
	setStErr('stWMPind');
	errors = errors + WMPindInfo;
	nextTest('testPlay()','stTestPlay');
}

var clientBW = 0;	

// Timer to catch non responsive wmp
var tPlayerTimeout = -1;

// Timer to get bandwidth during playback
var tPlayback = -1;

// Maximum bandwidth from playback testing
var maxBW = -1;

// Reception Quality (for advanced fast cache)
var receptionQuality = -1;

// Status flags
var statusBuffering = false;
var statusPlay = false;
var statusStop = false;

// Try playing a small film
function testPlay() {
	// Set flag so that we know that now is playback tested
	testPlayActive = true;

	// Trap error generated when trying to play media
	window.onerror = testPlay_err;

	// Turn mute on
	WMP7.settings.mute = true;
	
	// Trap nonresponsive players (15 secs)
	tPlayerTimeout = setTimeout('testPlayDone()',15000);
	
	WMP7.url = testPlayUrl;
	// setStOK(stTestPlay,lnkTestPlay);
}

// Called by timer to check wmp play bandwidth
function getBandwidth(status) {
	if (!statusStop) {
		bw = parseInt(WMP7.network.bandWidth);
		var br = WMP7.network.bitRate;
		var sp = WMP7.network.sourceProtocol;
		var rc = WMP7.network.receptionQuality;
		
		// Save highest bw
		if (bw > maxBW) maxBW = bw;
		
		// Check bw after 3 seconds of playing. If more than 700k, skip this test. BW OK.
		if (statusPlay && WMP7.playState == 3) {
			receptionQuality = WMP7.network.receptionQuality;
			if (WMP7.controls.currentPosition > 3.0 && maxBW > 700000) WMP7.controls.stop();
		}
			if (status == 'stop'){
			}	
			else {
//				document.getElementById('stTestPlay').innerHTML  = '<div style="margin-top:22px;">Bandbreedte > 450 Kbps:<BR />' + WMP7.status + '<br>Bandbreedte: ' + bw + '</div>';
				document.getElementById('stTestPlay').innerHTML  = '<div style="margin-top:28px;">Bandbreedte > 450 Kbps:<BR />' + WMP7.status + '</div>';
			}
		tPlayback = setTimeout('getBandwidth(\'stop\')',250);
	}
}
	
		

function testPlayDone() {
	// Turn mute off
	WMP7.settings.mute = false;
	WMP7.url = '';

	// Set client bandwidth to maximum bw (replaces old bw-test)
	clientBW = maxBW;
	if (maxBW > 1024) {
		document.getElementById('stTestPlay').innerHTML = '<div style="margin-top:22px;">Bandbreedte > 450 Kbps<BR>(Jouw bandbreedte:<BR> ' + Math.floor(maxBW/1024) + ' Kbps)</div>';
	} else {
		document.getElementById('stTestPlay').innerHTML = '<div style="margin-top:22px;">Bandbreedte > 450 Kbps<BR>(Jouw bandbreedte:<BR> ' + maxBW + ' bps)</div>';
	}
	 if (bw >= 460800 && bw < 716800){
	 aanbevelingspeed	= 'spResultImg450';
	 aanbevelingimg  = 'Aanbevolen afspeelsnelheid:<BR><img src="/images/450.gif" alt="450 Kbps" title="450 Kbps" />';
	 aanbeveling  = 'De test is afgelopen. Gezien de resultaten van de test raden wij je aan films met een snelheid van <span class="justorange"><b>450 Kbps</b></span> te bekijken.';
	 }
	 if (bw >= 716800 && bw < 1024000){
	 aanbevelingspeed	= 'spResultImg700';
	 aanbevelingimg  = 'Aanbevolen afspeelsnelheid:<BR><img src="/images/700.gif" alt="700 Kbps" title="700 Kbps" />';
	 aanbeveling  = 'De test is afgelopen. Gezien de resultaten van de test raden wij je aan films met een snelheid van <span class="justorange"><b>700 Kbps </b></span>te bekijken.';
	 }
	 if (bw >= 1024000 && bw < 1894400){
	 aanbevelingspeed	= 'spResultImg1000';
	 aanbevelingimg  = 'Aanbevolen afspeelsnelheid:<BR><img src="/images/1000.gif" alt="1000 Kbps" title="1000 Kbps" />';
	 aanbeveling  = 'De test is afgelopen. Gezien de resultaten van de test raden wij je aan films met een snelheid van <span class="justorange"><b>1000 Kbps</b></span> te bekijken.';
	 }
	 if (bw >= 1894400){
	 aanbevelingspeed	= 'spResultImg1850';
	 aanbevelingimg  = 'Aanbevolen afspeelsnelheid:<BR><img src="/images/1850.gif" alt="1850 Kbps" title="1850 Kbps" />';
	 aanbeveling  = 'De test is afgelopen! Gezien de resultaten van de test raden wij je aan films met een snelheid van <span class="justorange"><b>1850 Kbps</b></span> te bekijken.';
	 }
	// aanbeveling = aanbeveling + '<BR><img src="/images/filmfragment.gif" alt="Filmfragment" align="absbottom" />Klik hier om een filmfragment met een snelheid van 1850 Kbps te bekijken.';
	 if (bw < 460800){
	 aanbevelingspeed  = '';
	 aanbevelingimg  = '';
	 aanbeveling  = "De test is afgelopen.";
	 }

	if (maxBW > 460800 || (maxBW ==0 && receptionQuality == 100)) {
	    setStOK('stTestPlay');
		nextTest('endTest()','spResultButton');
  	} else {
  		// Select error msg depending on max bandwidth
		if (maxBW > 10000) {
			setStErr('stTestPlay');
			nextTest('endTest()','spResultButton');
			errors = errors + NetInfo;
		} else {
			setStErr('stTestPlay');
			nextTest('endTest()','spResultButton');
			errors = errors + NetInfo;
		}
	}	
}


// Trap error while testplay
function testPlay_err(msg, url, line) {
	// Turn mute off
	WMP7.settings.mute = false;
	//alert("test play err: " + msg + ", line " + line);
	
	setStErr('stTestPlay');
    nextTest('endTest()','spResultButton');
}



function endTest() {
    if (!aanbeveling){
       aanbeveling  = "";
    }
    if (!aanbevelingimg){
       aanbevelingimg  = "";
    }
    if (!aanbevelingspeed){
       aanbevelingspeed  = "";
    }
	if(aanbevelingspeed != ""){
	 	document.getElementById(aanbevelingspeed).style.display = "block";
	}
  //  document.getElementById('spResultImg').innerHTML = aanbevelingimg;
    document.getElementById('spResultButton').innerHTML = aanbeveling;
	document.getElementById('spResultTxt2').innerHTML = document.getElementById('spResultTxt2').innerHTML+errors;
  	document.getElementById('spResultTxt3').style.display = "none";
 	document.getElementById('spResultTxt4').style.display = "block";
// 	document.getElementById('spResultTxt3').innerHTML = StartTestAgain;

	if (errorCount == 0) {
		//document.getElementById('spResultTxt1').innerHTML = txtOk;
	} 
	else {
		document.getElementById('spResultTxt1').innerHTML = txtError;
	}
}


