1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
var spoil, sexual, t;
// Fixes the commas between trait names and the hidden status of the entire row
function fixrow(c) {
var l = byName(byName(c, 'td')[1], 'span');
var first = 1;
for(var i=0; i<l.length; i+=2)
if(!hasClass(l[i], 'hidden')) {
setClass(l[i+1], 'hidden', first);
first = 0;
}
setClass(c, 'hidden', first);
}
function restripe() {
for(var i=0; i<t.length; i++) {
var b = byName(t[i], 'tbody');
if(!b.length)
continue;
setClass(t[i], 'stripe', false);
var r = 1;
var rows = byName(b[0], 'tr');
for(var j=0; j<rows.length; j++) {
if(hasClass(rows[j], 'traitrow'))
fixrow(rows[j]);
if(!hasClass(rows[j], 'nostripe') && !hasClass(rows[j], 'hidden'))
setClass(rows[j], 'odd', r++&1);
}
}
}
function setall(h) {
var k = byClass('charspoil');
for(var i=0; i<k.length; i++)
setClass(k[i], 'hidden',
!sexual && hasClass(k[i], 'sexual') ? true :
hasClass(k[i], 'charspoil_0') ? false :
hasClass(k[i], 'charspoil_-1') ? spoil > 1 :
hasClass(k[i], 'charspoil_1') ? spoil < 1 : spoil < 2);
for(var i=0; i<3; i++)
setClass(h[i], 'sel', spoil == i);
if(h[3])
setClass(h[3], 'sel', sexual);
if(k.length)
restripe();
return false;
}
function init() {
var h = byName(byId('charops'), 'a');
t = byClass('table', 'stripe');
// Spoiler level
for(var i=0; i<3; i++) {
h[i].num = i;
h[i].onclick = function() {
spoil = this.num;
return setall(h);
};
if(hasClass(h[i], 'sel'))
spoil = i;
};
// Sexual toggle
if(h[3]) {
h[3].onclick = function() {
sexual = !sexual;
return setall(h);
};
sexual = hasClass(h[3], 'sel');
}
setall(h);
}
if(byId('charops'))
init();
|