var url_path = "https://ws.nperf.com"; document.write(''); window.addEventListener("message", function(event) { if(event.origin == "https://ws.nperf.com" || event.origin == "https://ws-cdn.nperf.com" || event.origin == "http://ws-nossl.nperf.com") { try { if (event.data.action == "nPerfLoaded") nPerfLoaded(); } catch (e) {} try { if (event.data.action == "nPerfReady") nPerfReady(); } catch (e) {} try { if (event.data.action == "nPerfError") nPerfError(event.data.type); } catch (e) {} try { if (event.data.action == "nPerfTestStarted") nPerfTestStarted(); } catch (e) {} try { if (event.data.action == "nPerfTestStarted") nPerfTestStartedOrRestarted(event.data.restart); } catch (e) {} try { if (event.data.action == "nPerfTestCompleted") nPerfTestCompletedObj(event.data); } catch (e) {} try { if (event.data.action == "nPerfTestCompleted") nPerfTestCompleted(event.data.id, event.data.isp, event.data.download_avg, event.data.download_peak, event.data.upload_avg, event.data.upload_peak, event.data.latency, event.data.latency_avg, event.data.latency_jitter, event.data.pool_id); } catch (e) {} try { if (event.data.action === "nPerfGetLastResult") { nPerfGetLastResult(event.data.lastResult); } } catch (e) {} try { if (event.data.action === "nPerfGetLastResult") { var obj = { action: "nPerfTestCompleted", id: event.data.lastResult.resultId, isp: event.data.lastResult.networkStart.ipV4.ispName || event.data.lastResult.networkStart.ipV6.ispName, download_avg: Math.round(event.data.lastResult.speed.download.averageExcludingSlowStart/1000), download_peak: Math.round(event.data.lastResult.speed.download.peak/1000), download_packetloss: event.data.lastResult.speed.download.tcpPacketLoss, upload_avg: Math.round(event.data.lastResult.speed.upload.averageExcludingSlowStart/1000), upload_peak: Math.round(event.data.lastResult.speed.upload.peak/1000), latency: event.data.lastResult.speed.latency.minimum, latency_avg: event.data.lastResult.speed.latency.average, latency_jitter: event.data.lastResult.speed.latency.jitter, pool_id: event.data.lastResult.speed.pool.poolId, locationType: event.data.lastResult.locationStart.type, locationAccuracy: event.data.lastResult.locationStart.accuracy, locationLat: event.data.lastResult.locationStart.latitude, locationLng: event.data.lastResult.locationStart.longitude, locationCountryIso3166: event.data.lastResult.locationGeocoding.country, locationAal1: event.data.lastResult.locationGeocoding.aal1, locationAal2: event.data.lastResult.locationGeocoding.aal2, locationLocality: event.data.lastResult.locationGeocoding.locality, locationFullAddress: event.data.lastResult.locationGeocoding.fullAddress } nPerfTestCompletedObj(obj); } } catch (e) {} try { if (event.data.action === "nPerfGetLastResult") { nPerfTestCompleted(event.data.lastResult.resultId, event.data.lastResult.networkStart.ipV4.ispName || event.data.lastResult.networkStart.ipV6.ispName, Math.round(event.data.lastResult.speed.download.averageExcludingSlowStart/1000), Math.round(event.data.lastResult.speed.download.peak/1000), Math.round(event.data.lastResult.speed.upload.averageExcludingSlowStart/1000), Math.round(event.data.lastResult.speed.upload.peak/1000), event.data.lastResult.speed.latency.minimum, event.data.lastResult.speed.latency.average, event.data.lastResult.speed.latency.jitter, event.data.lastResult.speed.pool.poolId); } } catch (e) {} try { if (event.data.action == "nPerfTestShare") nPerfTestShare(event.data); } catch (e) {} try { if (event.data.action == "nPerfResponsiveSwitch") { if(event.data.mode == "smart") document.getElementById("nPerfSpeedTest").style.height = "500px"; else document.getElementById("nPerfSpeedTest").style.height = "400px"; } } catch (e) {} try { if (event.data.action === "nPerfGetRealTimeUpdate") { delete event.data.action; nPerfGetRealTimeUpdate(event.data); } } catch (e) {} } }, false); if(document.getElementById("nPerfSpeedTest").offsetWidth>0 && document.getElementById("nPerfSpeedTest").offsetWidth<600) { document.getElementById("nPerfSpeedTest").style.height = "500px"; } function nPerfSetTheme(theme) { document.getElementById("nPerfSpeedTest").contentWindow.postMessage({ action: "nPerfSetTheme", theme: theme }, "*"); }