var styles = new Array();
var index = 0;
var delay = 50;
var multiple = 1;
var maxstep = 16;
var dostatus = false;
//var last = new Array(random(255), random(255), random(255));
var last = new Array(0, 0, 0);
var cycles;
var step;
var bodystyle;
function init() {
var count = 0;
var docstyles = document.styleSheets;
for (var i=0; i < docstyles.length; i++) {
var ss = docstyles[i];
var rules = ss.cssRules ? ss.cssRules : ss.rules;
for (var j=0; j < rules.length; j++) {
var rule = rules[j];
if (rule.selectorText.substring(0,2) == ".x") {
styles.push(rule);
count++;
}
if (rule.selectorText == "body") {
bodystyle = rule;
}
}
}
recalibrate();
for (var i=0;i window.setTimeout(iterate, 1000+((i+1)*200));
}
function recalibrate() {
cycles = new Array(rndbool(), rndbool(), rndbool());
step = new Array(random(maxstep), random(maxstep), random(maxstep));
window.setTimeout(recalibrate, 10000);
}
function rndjump() {
index = random(styles.length);
}
function rndbool() {
return Math.random() > 0.5;
}
function iterate() {
if (index >= styles.length) index = 0;
var style = styles[index++];
var c = "#" + nextrgb();
style.style["color"] = c;
window.setTimeout(iterate, delay);
if (dostatus) {
window.status = "x" + hpad(index.toString(16)) +
": " + step + " // " + cycles + " // " + c.substring(1);
}
return true;
}
function nextrgb() {
var c = "";
for (var i=0; i < cycles.length; i++) {
if (cycles[i]) last[i] += step[i];
else last[i] -= step[i];
if (last[i] < 0) {
last[i] = last[i] + step[i] + 1;
cycles[i] = true;
}
if (last[i] > 255) {
last[i] = last[i] - step[i] - 1;
cycles[i] = false;
}
c = c + hpad(last[i].toString(16));
}
return c;
}
function hpad(s) {
if (s.length == 1) return "0" + s;
return s;
}
function random(max) {
return Math.round(Math.random()*max);
}
init();
|