var ival, objRef, currentx, currenty, dx, dy;
var cs, sn, scale, scz, stepCnt, stepMax, l, tmp;

function initZoom(imgname, total, steps, maxx, maxy) {
	stepCnt = new Array();
	objRef = new Array();
	scale = new Array();
	scz = new Array();
	currentx = new Array();
	currenty = new Array();
	ival = new Array();
	for(l = 0; l < 5; l++) {
		stepCnt[l] = 0;
		stepCnt[l] = 0;
		objRef[l] = eval("document.getElementById('" + imgname + l + "')");
		scale[l] = 0; scz[l] = -0.5;
		currentx[l] = objRef[l].width;
		currenty[l] = objRef[l].height;
	}
	cs = 0.99904822;
	sn = 0.04361938;
	stepMax = steps;
	stepx = (maxx - currentx[0]) / steps;
	stepy = (maxy - currenty[0]) / steps;
	inttime = total / steps;
}

function zoomImg(i) {
	scale[i] = -scale[i];
	functionRef = "biggerImg(" + stepx + ", " + stepy + ", " + i + ")";
	clearInterval(ival[i]);
	ival[i] = setInterval(functionRef, inttime);
}

function shrinkImg(i) {
	scale[i] = -scale[i];
	functionRef = "smallerImg(" + stepx + ", " + stepy + ", " + i + ")";
	clearInterval(ival[i]);
	ival[i] = setInterval(functionRef, inttime);
}
	

function biggerImg(dx, dy, i) {
	objRef[i].width = currentx[i];
	if (stepCnt[i] < 56) {
		tmp = scale[i] * cs - scz[i] * sn;
		scz[i] = scale[i] * sn + scz[i] * cs;
		scale[i] = tmp;
		currentx[i] += scale[i] * dx;
		currenty[i] += scale[i] * dy;
		tmp = scale[i] * cs - scz[i] * sn;
		scz[i] = scale[i] * sn + scz[i] * cs;
		scale[i] = tmp;
		currentx[i] += scale[i] * dx;
		currenty[i] += scale[i] * dy;
		objRef[i].width = currentx[i];
		objRef[i].height = currenty[i];
		stepCnt[i] += 2;
	} else clearInterval(ival[i]);
}

function smallerImg(dx, dy, i) {
	if (stepCnt[i] > 0) {
		currentx[i] += scale[i] * dx;
		currenty[i] += scale[i] * dy;
		tmp = scale[i] * cs - scz[i] * sn;
		scz[i] = scale[i] * sn + scz[i] * cs;
		scale[i] = tmp;
		objRef[i].width = currentx[i];
		objRef[i].height = currenty[i];
		stepCnt[i]--;
	} else clearInterval(ival[i]);
}
