/* Griese.de - functions.js / K.Melzer */
frogDing.holder = {}; 
function frogDing(id,x,y,w,h) {
  var el = frogDing.getElemRef(id);
  if (!el) return;  this.id = id; 
  frogDing.holder[this.id] = this; this.mvString = "frogDing.holder." + this.id;
  var px = window.opera? 0: "px";
	this.x = x || 0;	if (x) el.style.left = this.x + px;
	this.y = y || 0;	if (y) el.style.top = this.y + px;
	this.w = w || el.offsetWidth || 0;	this.h = h || el.offsetHeight || 0;
	if (w) el.style.width = w + px; if (h) el.style.height = h + px;
}

frogDing.getElemRef = function(id) { 
  var el = document.getElementById? document.getElementById(id): null;
  return el;
} 

frogDing.getInstance = function(id) {
  var obj = frogDing.holder[id];
  if (!obj) obj = new frogDing(id);
  else if (!obj.el) obj.el = frogDing.getElemRef(id);
  return obj;
}

frogDing.prototype.mvTo = function(x,y) {
  var el = this.el? this.el: frogDing.getElemRef(this.id)? frogDing.getElemRef(this.id): null;
  if (el) {
    if (x != null) el.style.left = (this.x = x) + "px";
    if (y != null) el.style.top = (this.y = y) + "px";
  }
}

frogDing.prototype.mvBy = function(x,y) { this.mvTo(this.x+x, this.y+y); }

frogDing.prototype.show = function() { 
  var el = this.el? this.el: frogDing.getElemRef(this.id)? frogDing.getElemRef(this.id): null;
  if (el) el.style.visibility = "visible"; 
}
frogDing.prototype.hide = function() { 
  var el = this.el? this.el: frogDing.getElemRef(this.id)? frogDing.getElemRef(this.id): null;
  if (el) el.style.visibility = "hidden"; 
}

var fw_kurv = {
  B1: function (t) { return t*t*t },
  B2: function (t) { return 3*t*t*(1-t) },
  B3: function (t) { return 3*t*(1-t)*(1-t) },
  B4: function (t) { return (1-t)*(1-t)*(1-t) },

  getValue: function (percent,startVal,endVal,c1,c2) {
    return endVal * this.B1(percent) + c2 * this.B2(percent) + c1 * this.B3(percent) + startVal * this.B4(percent);
  }
}
fw_ani = {
  instances: [],
  add: function(fp) {
    this.instances[this.instances.length] = fp;
  	if (this.instances.length == 1) this.timerID = window.setInterval("fw_ani.control()", 10);
  },
  
  remove: function(fp) {
    for (var i = 0; this.instances[i]; i++) {
  		if (fp == this.instances[i]) {
  			this.instances = this.instances.slice(0,i).concat( this.instances.slice(i+1) );
  			break;
  		}
  	}
  	if (this.instances.length == 0) {
  		window.clearInterval(this.timerID);	this.timerID = null;
  	}
  },
  
  control: function() {
    for (var i = 0; this.instances[i]; i++) {
  		if (typeof this.instances[i] == "function" ) this.instances[i]();
      else eval(this.instances[i]);
    }
  }
}


frogDing.prototype.slideTo = function (destX,destY,slideDur,acc,endFn) {
  if (!document.getElementById) return;
  this.slideDur = slideDur || .0001; var acc = -acc || 0;
  if (endFn) this.onSlideEnd = endFn;
 	if (destX == null) this.destX = this.x;	else this.destX = destX;
  if (destY == null) this.destY = this.y; else this.destY = destY;
  this.startX = this.x; this.startY = this.y;
	this.st = new Date().getTime();
  this.xc1 = this.x + ( (1+acc) * (this.destX-this.x)/3 );
	this.xc2 = this.x + ( (2+acc) * (this.destX-this.x)/3 );
  this.yc1 = this.y + ( (1+acc) * (this.destY-this.y)/3 );
	this.yc2 = this.y + ( (2+acc) * (this.destY-this.y)/3 );
	this.sliding = true;
  this.onSlideStart();
  fw_ani.add(this.mvString + ".doSlide()");
}

frogDing.prototype.doSlide = function() {
	if (!this.sliding) return;	
	var elapsed = new Date().getTime() - this.st;
	if (elapsed < this.slideDur) {
    var x = fw_kurv.getValue(elapsed/this.slideDur, this.startX, this.destX, this.xc1, this.xc2);
    var y = fw_kurv.getValue(elapsed/this.slideDur, this.startY, this.destY, this.yc1, this.yc2);
		this.mvTo( Math.round(x) ,Math.round(y) );
		this.onSlide();
	} else {
    fw_ani.remove(this.mvString + ".doSlide()");
		this.mvTo(this.destX,this.destY);
		this.onSlide();
		this.sliding = false;
		this.onSlideEnd();
	}
}

frogDing.prototype.slideBy = function(dx,dy,slideDur,acc,endFn) {
	var destX=this.x+dx; var destY=this.y+dy;
	this.slideTo(destX,destY,slideDur,acc,endFn);
}

frogDing.prototype.onSlideStart = function () {}
frogDing.prototype.onSlide = function () {}
frogDing.prototype.onSlideEnd = function () { if (this.el) this.el = null; }











function FW_getimg() { 
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=FW_getimg.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function FW_chngBack() {
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function FW_which(n, d) {
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=FW_which(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function FW_chngimg() { 
  var i,j=0,x,a=FW_chngimg.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=FW_which(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
