var maxW,maxH,fromX,fromY,toX,toY,adjX,adjY,zBox,zStep=0,zLink,zNew;

function zoomBox(evt,zlink,maxw,maxh,tox,toy) {
	if (arguments.length > 2) zNew=1;
	scrollH=(window.pageYOffset!=null)?window.pageYOffset:document.body.scrollTop;
	maxW=maxw?maxw:window.innerWidth?innerWidth:document.body.clientWidth;
	maxH=maxh?maxh:window.innerHeight?innerHeight:document.body.clientHeight;
	toX=tox?tox:0;
	toY=(toy?toy:0)+scrollH;
	fromX=evt.pageX?evt.pageX:evt.clientX;
	fromY=(evt.pageY?evt.pageY:evt.clientY)+(document.all?scrollH:0);
	adjX=toX+evt.screenX-fromX;
	adjY=toY+evt.screenY-fromY;
	if (document.createElement && document.body.appendChild && !zBox) {
		zBox=document.createElement("div");
		zBox.style.position="absolute";
		document.body.appendChild(zBox);
	} 
	else if (document.all && !zBox) {
	   document.all[document.all.length-1].outerHTML+="<div id=zBoxDiv style=position:absolute></div>";
	   zBox=document.all.zBoxDiv;
	} 
	
	else if (document.layers && !zBox) {
		zBox=new Layer(maxW);
		zBox.style=zBox;
	}
	zLink=zlink;
	doZoom();
}

function doZoom() {
zStep+=1;
zPct=(10-zStep)/10
	if (document.layers) {
		zBox.moveTo(toX+zPct*(fromX-toX),toY+zPct*(fromY-toY));
		zBox.document.open();
		zBox.document.write("<TABLE WIDTH="+maxW*(1-zPct)+" HEIGHT="+maxH*(1-zPct)+" BORDER=0 CELLSPACING=0><TR><TD></TD></TR></TABLE>");
		zBox.document.close();
	} 
	
	else {
		zBox.style.border="2px solid #999999";
		zBox.style.left=toX+zPct*(fromX-toX);
		zBox.style.top=toY+zPct*(fromY-toY);
		zBox.style.width=maxW*(1-zPct);
		zBox.style.height=maxH*(1-zPct);
	}
	
	zBox.style.visibility="visible";
	if (zStep < 10) setTimeout("doZoom("+fromX+","+fromY+","+toX+","+toY+")",30);
	else {
		zBox.style.visibility="hidden";
		zStep=0;
		if (zLink && !zNew) location.href=zLink.href;
		else if (zLink && zNew) {
			var w=window.open(zLink.href,"","width="+maxW+",height="+maxH+",left="+adjX+",top="+adjY+",scrollbars=yes,resizable=no");
			zNew=null;
		}
	}
}
