| 
1285
 | 
     1 <!doctype html>
 | 
| 
 | 
     2 <html>
 | 
| 
 | 
     3 	<head>
 | 
| 
 | 
     4 		<meta name="viewport" content="width=device-width, initial-scale=1">
 | 
| 
 | 
     5 		<style>
 | 
| 
 | 
     6 			button {
 | 
| 
 | 
     7 				cursor: pointer;
 | 
| 
 | 
     8 				font-size: 1em;
 | 
| 
 | 
     9 				border-radius: 6px;
 | 
| 
 | 
    10 				display: none;
 | 
| 
 | 
    11 			}
 | 
| 
 | 
    12 			button:focus {
 | 
| 
 | 
    13 				outline: inherit;
 | 
| 
 | 
    14 			}
 | 
| 
 | 
    15 		</style>
 | 
| 
 | 
    16 		<script>
 | 
| 
 | 
    17 
 | 
| 
 | 
    18 			function now() {
 | 
| 
 | 
    19 				return Math.floor(Date.now()/1000);
 | 
| 
 | 
    20 			}
 | 
| 
 | 
    21 
 | 
| 
 | 
    22 			function showTime() {
 | 
| 
 | 
    23 				var start = localStorage.start;
 | 
| 
 | 
    24 				var time;
 | 
| 
 | 
    25 				if( !start ) {
 | 
| 
 | 
    26 					time = 0;
 | 
| 
 | 
    27 				} else {
 | 
| 
 | 
    28 					var stop = localStorage.stop || now();
 | 
| 
 | 
    29 					time = stop - start;
 | 
| 
 | 
    30 				}
 | 
| 
 | 
    31 				var seconds = time % 60;
 | 
| 
 | 
    32 				time = Math.floor(time/60);
 | 
| 
 | 
    33 				var minutes = time % 60;
 | 
| 
 | 
    34 				time = Math.floor(time/60);
 | 
| 
 | 
    35 				var hours = time;
 | 
| 
1287
 | 
    36 				seconds = ('0'+seconds).slice(-2);
 | 
| 
 | 
    37 				minutes = ('0'+minutes).slice(-2);
 | 
| 
 | 
    38 				time = hours + ':' + minutes + ':' + seconds;
 | 
| 
1285
 | 
    39 				document.querySelector('[time]').innerHTML = time;
 | 
| 
 | 
    40 			}
 | 
| 
 | 
    41 
 | 
| 
 | 
    42 			function fixButtons() {
 | 
| 
 | 
    43 				var isRunning = localStorage.start && !localStorage.stop;
 | 
| 
 | 
    44 				if( isRunning ) {
 | 
| 
 | 
    45 					document.querySelector('[start]').style.display = 'none';
 | 
| 
 | 
    46 					document.querySelector('[stop]').style.display = 'inline-block';
 | 
| 
 | 
    47 					document.querySelector('[reset]').style.display = 'none';
 | 
| 
 | 
    48 				} else {
 | 
| 
 | 
    49 					document.querySelector('[start]').style.display = 'inline-block';
 | 
| 
 | 
    50 					document.querySelector('[stop]').style.display = 'none';
 | 
| 
 | 
    51 					if( localStorage.start ) {
 | 
| 
 | 
    52 						document.querySelector('[reset]').style.display = 'inline-block';
 | 
| 
 | 
    53 					} else {
 | 
| 
 | 
    54 						document.querySelector('[reset]').style.display = 'none';
 | 
| 
 | 
    55 					}
 | 
| 
 | 
    56 				}
 | 
| 
 | 
    57 			}
 | 
| 
 | 
    58 
 | 
| 
 | 
    59 			function start() {
 | 
| 
 | 
    60 				var stop = localStorage.stop;
 | 
| 
 | 
    61 				if( !stop ) {
 | 
| 
 | 
    62 					localStorage.start = now();
 | 
| 
 | 
    63 				} else {
 | 
| 
1287
 | 
    64 					localStorage.removeItem('stop');
 | 
| 
1285
 | 
    65 					localStorage.start = now() - (stop - localStorage.start);
 | 
| 
 | 
    66 				}
 | 
| 
 | 
    67 				fixButtons();
 | 
| 
 | 
    68 			}
 | 
| 
 | 
    69 
 | 
| 
 | 
    70 			function stop() {
 | 
| 
 | 
    71 				localStorage.stop = now();
 | 
| 
 | 
    72 				fixButtons();
 | 
| 
 | 
    73 			}
 | 
| 
 | 
    74 
 | 
| 
 | 
    75 			function reset() {
 | 
| 
1287
 | 
    76 				localStorage.removeItem('start');
 | 
| 
 | 
    77 				localStorage.removeItem('stop');
 | 
| 
1285
 | 
    78 				showTime();
 | 
| 
 | 
    79 				fixButtons();
 | 
| 
 | 
    80 			}
 | 
| 
 | 
    81 
 | 
| 
 | 
    82 			function loaded() {
 | 
| 
 | 
    83 				showTime();
 | 
| 
 | 
    84 				fixButtons();
 | 
| 
 | 
    85 				setInterval(showTime,1000);
 | 
| 
 | 
    86 			}
 | 
| 
 | 
    87 
 | 
| 
 | 
    88 		</script>
 | 
| 
 | 
    89 	</head>
 | 
| 
 | 
    90 	<body onload="loaded()">
 | 
| 
 | 
    91 		<h1 time></h1>
 | 
| 
 | 
    92 		<button start onclick="start()">start</button>
 | 
| 
 | 
    93 		<button stop onclick="stop()">stop</button>
 | 
| 
 | 
    94 		<button reset onclick="reset()">reset</button>
 | 
| 
 | 
    95 	</body>
 | 
| 
 | 
    96 </html>
 |