// Ravn Webveveriet Animasjonssystem v1.2 (tid mellom mål basert på avstand (gjort i nyttMaal)

// "frames" per sekund
rwa_fps = 50;

// animer en div...
function rwa_animasjon(id, xMin, yMin, xMax, yMax, speed) {
	// skal fungere i netscape 4 og opp, ie 4 og opp
	this.div = (document.getElementById) ? document.getElementById(id).style : ((document.layers) ? document.layers[id] : document.all[id].style);
	this.get_x = rwa_get_x;
	this.get_y = rwa_get_y;
	this.set_x = rwa_set_x;
	this.set_y = rwa_set_y;
	
	this.bevegDeg = rwa_bevegDeg;
	this.nyttMaal = rwa_nyttMaal;
	
	this.xMin = xMin;
	this.xDif = xMax-xMin;
	this.xMax = xMax;
	this.set_x(xMin);
	
	this.yMin = yMin;
	this.yDif = yMax-yMin;
	this.yMax = yMax;
	this.set_y(yMin);
	
	if(speed==null) var speed = 0.2;// gjennomsnittlig antall pixels/frame
	this.speed = speed;
	this.mspf = 1000/rwa_fps;// millisekunder/frame (brukes i nyttMaal())

	this.nyttMaal();
	this.aktiv = true;// så ting kan deaktiveres
	rwa_addAnim(this);
}
// hjelpefunksjoner til animasjonsobjektet
function rwa_get_x() {return parseInt(this.div.left);}
function rwa_get_y() {return parseInt(this.div.top);}
function rwa_set_x(x) {this.div.left = Math.round(x);}
function rwa_set_y(y) {this.div.top = Math.round(y);}
// dikt ny destinasjon og beregn tiden vi vil bruke dit...
function rwa_nyttMaal() {
	this.startX = this.get_x();
	this.diffX =  (this.xMax-Math.random()*this.xDif)-this.startX;

	this.startY = this.get_y();
	this.diffY =  (this.yMax-Math.random()*this.yDif)-this.startY;

	this.startTid = new Date().getTime();

	var dist = Math.sqrt(this.diffX*this.diffX+this.diffY*this.diffY);
	this.varighet = (dist/this.speed)*this.mspf;

	this.stopTid = this.startTid + this.varighet;
}
// kalles for hver animasjon hver "frame"
function rwa_bevegDeg(nu) {
	if(nu>this.stopTid) {
		this.nyttMaal();
	} else {
		var prosent = (nu-this.startTid)/this.varighet;
		this.set_x(this.startX+(this.diffX*prosent));
		this.set_y(this.startY+(this.diffY*prosent));
	}
}
// slutt hjelpefunksjoner

// kalles av "rwa_animasjon" hver gang en animasjon opprettes
function rwa_addAnim(objekt) {
	if(document.rwa_animasjoner == null) document.rwa_animasjoner = new Array();
	if(document.rwa_timer == null) document.rwa_timer = setInterval("rwa_animer()", Math.round(1000/rwa_fps));
	document.rwa_animasjoner.push(objekt);
}
// kalles hver frame for å få ting til å skje.
function rwa_animer() {
	var a = document.rwa_animasjoner;
	var tid = new Date().getTime();
	for(var i=0; i<a.length; i++) {
		if(a[i].aktiv) {
			a[i].bevegDeg(tid);
		}
	}
}
