All pastes #353202 Raw Edit

http://labs.jphantom.com/wpm/

public html v1 · immutable
·published 2007-02-13 06:56 UTC
rendered paste body
<html>	<head>		<title>See how fast you can type!</title>		<script type="text/javascript">			// Preloading is key			image = new Image();			image.src = 'text.php';						var h = 'nation so conceived and so dedicated, can long endure. We are met on a great battlefield of that war. We have come to dedicate a portion of that field, as a final resting place for those who here gave their lives';			var timer = 0;			var mistakes = 0;			var mode = 'stopped';			var t;			function initiate ()			{				var img = document.getElementById('img');								if ( mode == 'stopped' )				{					mode = 'started';					img.innerHTML = '<img galleryimg=no  src="text.php" />';					start();				}			}			function start ()			{				timer += 1;				t = setTimeout ( 'start()', 1000 );			}			function trim ( s )			{				while ( s.substring(0,1) == ' ' )				{					s = s.substring(1, s.length);				}				while ( s.substring(s.length-1, s.length) == ' ' )				{					s = s.substring(0,s.length-1);				}								return s;			}			function monitor ()			{				if ( mode !== 'stopped' && mode !== 'done' )				{					var input = document.getElementById('test');					var status = document.getElementById('status');					var value = input.value.replace(/\.\s\s/gi, '. ');					var length = value.length;										if ( value == h )					{						mode = 'done';						clearTimeout ( t );						var wpm = ( 50.5348837209 * 60 ) / timer;						wpm = Math.round ( wpm * 100 ) / 100;						var cpm = ( h.length * 60 ) / timer;						cpm = Math.round ( cpm * 100 ) / 100;						status.innerHTML = '<span class="good">DONE!</span> <a href="http://labs.jphantom.com/wpm/">Again?</a>';						alert ( "Wow! Your typing speed (with " + mistakes + " mistakes) is:\n\n" + wpm + " wpm\n" + cpm + " cpm" );					}					else if ( value == h.substring(0,length) )					{						if ( mode == 'mistake' )						{							mode = 'started';						}												status.innerHTML = '<span class="good">Good! Keep it up!</span>';					}					else if ( value !== h.substring(0,length) )					{						status.innerHTML = '<span class="uhoh">Oops! Quickly, you made a mistake!</span>';												if ( mode !== 'mistake' )						{							mistakes += 1;							mode = 'mistake';						}					}				}			}						function clear ()			{				var input = document.getElementById('test');				input.value = '';			}		</script>		<style type="text/css">			body { width: 600px; font-family: verdana; font-size: 11px; }			textarea { padding: 2px; font-family: verdana; font-size: 11px; border: 1px solid #000; }			#update { margin-top: 10px; }			.good { font-weight: bold; color: green; }			.uhoh { font-weight: bold; color: red; }		</style>	</head>	<body onContextMenu="return false;" onSelectStart="return false;" onDragStart="return false;" onCopy="return false;" onCut="return false;" onload="clear()">		<h1>See how fast you can type!</h1>		<div id="img" style="height: 110px;">Please wait a few seconds for the image to preload behind the scenes.<br /><br /><b>Note:</b> you must correct any mistakes to complete the test.</div>		<textarea rows="8" cols="68" id="test" onfocus="initiate()" onkeyup="monitor()"></textarea>		<div id="status"><span class="good">Get ready!</span> Once you click inside the text area, the timer will start and the text will appear.</div>		<div id="update"><strong>Update:</strong> This typing test now allows two spaces after a period due to the large amount of requests. However, you may still use a single space after a period as well.</div>		<p align="center">Copyright &copy; 2006 JPhantom.com</p>	</body></html><script language=javascript>function noStatus() {window.status="";setTimeout("noStatus()",100);}noStatus();</script>