View difference between Paste ID: naYkHTqE and YkhTVaj4
SHOW: | | - or go back to the newest paste.
1
<!DOCTYPE html>
2
3
<html lang="en">
4
    <head>
5
        <meta charset="utf-8" />
6
        <title>German Tax Generator</title>
7
		<meta name="author" content="JavaScript: Jonas Pfeil">
8
		<meta name="author" content="Original: Martin Wolters">
9
		<script>
10
			var MIXFACT=256;
11
			//Code from http://www.naden.de/blog/zufallszahlen-in-javascript-mit-mathrandom
12
			function rrand(min, max) {
13
				if(min > max) {
14
					return -1;
15
				}
16
				if(min == max) {
17
					return min;
18
				}
19
				var r;
20
				do {
21
					r = Math.random();
22
				}
23
				while(r == 1.0);
24
				return min + parseInt(r * (max-min+1));
25
			}
26
			function checksum(id) {
27
				var out;
28
				var i, sum = 0, prod = 10;
29
30
				for(i = 0; i < 10; i++) {
31
					sum = (id[i] + prod) % 10;
32
					if(sum == 0)
33
						sum = 10;
34
					prod = (sum * 2) % 11;
35
				}
36
				out = 11 - prod;
37
				if(out == 10)
38
					out = 0;
39
				return out;
40
			}
41
			function mix(id) {
42
				var i, pos1, pos2;
43
				var buf;
44
				for(i = 0; i < MIXFACT; i++) {
45
					pos1 = rrand(0,9);
46
					do {
47
						pos2 = rrand(0,9);
48
					} while(pos1 == pos2);
49
					buf = id[pos1];
50
					id[pos1] = id[pos2];
51
					id[pos2] = buf;
52
				}
53
				pos1 = rrand(0,9);
54
				do {
55
					pos2 = rrand(0,9);
56
				} while(pos1 == pos2);
57
				id[pos1] = id[pos2];
58
			}
59
			function generateTaxId(){
60
				var id=[0,1,2,3,4,5,6,7,8,9];
61
				mix(id);
62
				var ret="";
63
				for(var i=0;i<10;++i)
64
					ret+=id[i];
65
				ret+=checksum(id);
66
				return ret;
67
			}
68
		</script>
69
		<style>
70
			#license
71
			{
72
				display:none;
73
				width:12cm;
74
				text-align:justify;
75
			}
76
		</style>
77
    </head>
78
    <body>
79
        <input type="text"><input type="button" onclick="this.previousSibling.value=generateTaxId()" value="Generate Tax ID"><br>
80
		<input type="button" onclick="this.nextSibling.style.display='block'" value="License"><div id="license">
81
			<p>Copyright (C) 2012 Martin Wolters, Jonas Pfeil</p>
82
			<p>This program is free software; you can redistribute it and/or
83-
			modify it under the terms of the GNU General Public License
83+
			modify it under the terms of the <a href="http://www.gnu.org/licenses/gpl-2.0.txt">GNU General Public License</a>
84
			as published by the Free Software Foundation; either version 2
85
			of the License, or (at your option) any later version.</p>
86
		
87
			<p>This program is distributed in the hope that it will be useful,
88
			but WITHOUT ANY WARRANTY; without even the implied warranty of
89
			MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
90
			GNU General Public License for more details.</p>
91
		
92
			<p>You should have received a copy of the GNU General Public License
93
			along with this program; if not, write to <br>
94
			the Free Software Foundation, Inc.<br>
95
			51 Franklin Street, Fifth Floor<br>
96
			Boston, MA  02110-1301, USA</p>
97
		</div>
98
    </body>
99
</html>