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);
	}
	
	mxp = mx / (2 * midW);
	
	power = 1 + 70 * Math.pow(mxp, 4);
}

function frameloop() {
	wavepos += wavestep;
	if (wavepos > 1.0 || wavepos < 0.0) {
		wavestep *= -1;
		wavepos += wavestep;
	}
	
	if (wavepos < 0.5) {
		bri = 0.5 * Math.min(1.0, Math.pow((2 * wavepos), power));
	} else {
		bri = 1 - 0.5 * Math.min(1.0, Math.pow((2 * (1-wavepos)), power));
	}
	
	bgColor = hsb2rgbstring(hue,sat,bri);
	document.bgColor = bgColor;
}

function init() {
	// den even thandler 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;

	//hsb-werte setzen
	hue = 0.0;
	sat = 0.0;
	bri = 0.0;
	
	wavestep = 0.01;
	wavepos = 0.0;	
	power = 1.0;
	
	// den frameloop aktivieren
	timer = window.setInterval("frameloop()", 30);
}

//globale variablen deklarieren
var hue, sat, bri;
var mx, my, midW, midH, mxp, myp;
var wavepos, wavestep, power;
