var timerLength = 5;
var slideAnimationLength = 1000;

var timerID = new Array();
var startTime = new Array();
var animObjects = new Array();
var endHeight = new Array();
var startHeight = new Array();
var moving = new Array();

function kpScaleto(objectname,newheight){
  if(moving[objectname]){
    endSlide(objectname);
  }
  moving[objectname] = true;
  startslide(objectname,newheight);
}

function kpGetElement(objname) {
	return $(objname);
}

function startslide(objectname,newheight){
  animObjects[objectname] = kpGetElement(objectname);
  endHeight[objectname] = newheight;
  startHeight[objectname] = parseInt(animObjects[objectname].style.height);
  startTime[objectname] = (new Date()).getTime();
  timerID[objectname] = setInterval('slidetick(\'' + objectname + '\');',timerLength);
}
function slidetick(objectname){
	var elapsed = (new Date()).getTime() - startTime[objectname];
	if(elapsed>=slideAnimationLength){
		endSlide(objectname);
		return;
	}
	var multiplier = elapsed / slideAnimationLength;
	var currentheight = parseInt(animObjects[objectname].style.height);
	var modified = easeOutElastic(elapsed,startHeight[objectname],endHeight[objectname]-startHeight[objectname],slideAnimationLength);
	
	if(modified<0){
		modified = 0;
	}
	animObjects[objectname].style.height = Math.round(modified) + "px"; 
	return;
}

function easeOutBounce(t, b, c, d, a, p) {
	if ((t/=d) < (1/2.75)) {
			return c*(7.5625*t*t) + b;
		} else if (t < (2/2.75)) {
			return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
		} else if (t < (2.5/2.75)) {
			return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
		} else {
			return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
		}
}
function easeOutElastic(t, b, c, d, a, p) {
		if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
		if (!a || a < Math.abs(c)) { a=c; var s=p/4; }
		else var s = p/(2*Math.PI) * Math.asin (c/a);
		return (a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b);
}
function endSlide(objectname){
  clearInterval(timerID[objectname]);
  animObjects[objectname].style.height = endHeight[objectname] + "px";
  
  delete(moving[objectname]);
  delete(timerID[objectname]);
  delete(startTime[objectname]);
  delete(endHeight[objectname]);
  delete(startHeight[objectname]);
  delete(animObjects[objectname]);
 
  return;
}
function expand(){
	kpScaleto("kontrollpanel",300);
	kpScaleto("scaletest",300);
	
}
function collapse(){
	kpScaleto("kontrollpanel",75);
	kpScaleto("scaletest",75);
}