_glob_hasInitialised=false;
_glob_isRolledOver=false;
function makeInterface(th,zm){
  if (!document.getElementById('holder')) return false; 
	_glob_controlImg= new Image(); 
	_glob_controlImg.src=th;
	_glob_zoomImg= new Image(); 
	_glob_zoomImg.src=zm;
	initialiseview=setInterval("calculateInterface()", 500 );
}
function calculateInterface(){
	if ((_glob_controlImg.complete==true)&&(_glob_zoomImg.complete==true)){
		_glob_controlHolder=document.getElementById("control");
		var controlHolderDims=getElementSize(_glob_controlHolder);
		var controlHolderPos=getAbsolutePosition(_glob_controlHolder);
		_glob_controlXOffset=controlHolderPos.x;
		_glob_controlYOffset=controlHolderPos.y;
		_glob_zoomHolder=document.getElementById("zoom");
		var zoomHolderDims=getElementSize(_glob_zoomHolder);
		_glob_controlXRatio=(_glob_zoomImg.width/_glob_controlImg.width);
		_glob_controlYRatio=(_glob_zoomImg.height/_glob_controlImg.height);
		_glob_controlCenterX=((-_glob_controlImg.width/2)+(controlHolderDims[0]/2));
		_glob_controlCenterY=((-_glob_controlImg.height/2)+(controlHolderDims[1]/2));
		_glob_zoomCenterX=((-_glob_zoomImg.width/2)+(zoomHolderDims[0]/2));
		_glob_zoomCenterY=((-_glob_zoomImg.height/2)+(zoomHolderDims[1]/2));
		_glob_zoomHolder.style.backgroundPosition=_glob_zoomCenterX+"px "+_glob_zoomCenterY+"px";
		_glob_zoomHolder.style.visibility="visible"; 
		_glob_controlHolder.onmouseover=function(){
			if (_glob_hasInitialised==true) {
				_glob_isRolledOver=true;
				zoomposition=setInterval("zoomtopoint()",100);
			}
		}
		_glob_controlHolder.onmouseout=function(){
			if ((_glob_hasInitialised==true)&&(_glob_isRolledOver==true)) {
				_glob_isRolledOver=false;
			}
		}
		_glob_hasInitialised=true;
		clearInterval(initialiseview);
	}
}
function zoomtopoint(){
	if (_glob_isRolledOver==false) {
		var tgx=_glob_zoomCenterX;
		var tgy=_glob_zoomCenterY;
	}
	else {
		var tgx=(-(((mouseX-_glob_controlXOffset)-(_glob_controlImg.width/2))*_glob_controlXRatio)+_glob_zoomCenterX);
		var tgy=(-(((mouseY-_glob_controlYOffset)-(_glob_controlImg.height/2))*_glob_controlYRatio)+_glob_zoomCenterY);
	}
	var currpos=_glob_zoomHolder.style.backgroundPosition;
	currpos=currpos.split(" ");
	_glob_zoomTargetX=getInertiaValue(parseInt(currpos[0]),tgx,5);
	_glob_zoomTargetY=getInertiaValue(parseInt(currpos[1]),tgy,5);
	_glob_zoomHolder.style.backgroundPosition=_glob_zoomTargetX+"px "+_glob_zoomTargetY+"px";	
	if ((Math.round(_glob_zoomTargetX)==Math.round(tgx))&&(Math.round(_glob_zoomTargetX)==Math.round(tgx))&&(_glob_isRolledOver==false)){
		clearInterval(zoomposition);
	}
}
function getInertiaValue(prop,dest,rate) {
  return Math.ceil(prop+((dest-(prop))/rate));
}
function getAbsolutePosition(element) {
var r = { x: element.offsetLeft, y: element.offsetTop };
    if (element.offsetParent) {
      var tmp = getAbsolutePosition(element.offsetParent);
      r.x += tmp.x;
      r.y += tmp.y;
    }
    return r;
  };
function getElementSize(element) {
	var myWidth = 0, myHeight = 0;
	myWidth = element.offsetWidth;
	myHeight = element.offsetHeight;
	dimensions=new Array();
	dimensions[0]=myWidth;
	dimensions[1]=myHeight;
	return dimensions;
}
var mouseX, mouseY;
function getMousePos(e)
{
if (!e)
var e = window.event||window.Event;

if('undefined'!=typeof e.pageX)
{
mouseX = e.pageX;
mouseY = e.pageY;
}
else
{
mouseX = e.clientX + document.body.scrollLeft;
mouseY = e.clientY + document.body.scrollTop;
}

}
if(window.Event && document.captureEvents)
document.captureEvents(Event.MOUSEMOVE);
document.onmousemove = getMousePos;

