function move(e) {
	if (document.all?true:false) { // grab the x-y pos.s if browser is IE
		mx = event.clientX;
		my = event.clientY;
	} else {  // grab the x-y pos.s if browser is NS
		mx = Math.max(0, e.pageX);   // + catch possible negative values in NS4
		my = Math.max(0, e.pageY);
	}
	
	mxd = mx - midW;
	myd = my - midH;
	dist = Math.min(1.0, Math.max(Math.abs(mxd / midW), Math.abs(myd / midH)));
}

function frameloop() {
	//generatoren antreiben
	for (i = 0; i < generatoren.length; i++) generatoren[i].tick();

	hue = farbe1.val();
	sat = 0.5 + sat1.val() + sat2.val();
	bri = 1 - sat;
	bgColor = hsb2rgbstring(hue,sat,bri);

	document.bgColor = bgColor;
	document.fgColor = bgColor;
	
	window.status = hpos;
}

function init() {
	// den eventhandler initialisieren
	if (!document.all?true:false) document.captureEvents(Event.MOUSEMOVE)
	document.onmousemove = move;

	//umgebungsvariablen initialisieren
	// die fenstergröße muß browserabhängig festgestellt werden	
	midW = ((window.innerWidth == null)? document.body.clientWidth : window.innerWidth) / 2;
	midH = ((window.innerHeight == null)? document.body.clientHeight : window.innerHeight) / 2;
	// die position auf mitte setzen
	mx = midW;
	my = midH;
	//startposition abhängig von der tageszeit	
	hpos = (((new Date).getTime() % 86400000) / 86400000);
	fpos = hpos;
	//hsb-werte setzen
	hue = hpos;
	sat = 1.0;
	bri = 1.0;
	
	//generatoren starten
	farbe1 = new sinus(0.0002, 3.0, Math.random());
	generatoren.push(farbe1);
	
	sat1 = new sinus(0.001, 0.35, Math.random());
	generatoren.push(sat1);
	
	sat2 = new sinus(0.04, 0.15, Math.random());
	generatoren.push(sat2);
	
	// den frameloop aktivieren
	timer = window.setInterval("frameloop()", 30);
}

//globale variablen deklarieren
var hpos, vpos;
var hue, sat, bri;
var mx, my, midW, midH, dist;

var generatoren = new Array();
var farbe1;
var sat1, sat2;

