var z_divZoom, z_divFrame, z_divBloc;
var z_blocId;
var z_fltRatio;
var z_bolZoomOK = false;
var z_imgW, z_imgH, z_frameW, z_frameH;
var z_x1, z_y1, z_x2, z_y2;
var z_bolLocked = false, z_intTO, z_intTOFrame;

var z_divGlobal, z_globalX = 0, z_globalY = 0;

function __Z_initZoom(globalDivId) {
  z_divZoom = getE('divZoom');
  z_divFrame = getE('divFrame');
  z_divBloc = getE(z_blocId);
  
  if(globalDivId){
    z_divGlobal = getE(globalDivId);
    __Z_resize();
  }
    
  if(!z_divZoom || !z_divFrame || !z_fltRatio || !z_divBloc)
    return;

  z_x1 = parseInt(z_divBloc.style.left);
  z_y1 = parseInt(z_divBloc.style.top);
  z_x2 = z_x1 + z_imgW;
  z_y2 = z_y1 + z_imgH;

  showE(z_divFrame);
  showE(z_divZoom);

  z_bolZoomOK = true;
  
  __Z_setPosition(Math.floor(z_imgW/2 - z_frameW/2), Math.floor(z_imgH/2 - z_frameH/2)-50);
}

function __Z_resize(){
  if(z_divGlobal){
    z_globalX = getPageX(z_divGlobal);
    z_globalY = getPageY(z_divGlobal);
  }
}

function __Z_setPosition(x, y) {
  if(!z_bolZoomOK)
    return;
  if(x<0)
    x = 0;
  if(y<0)
    y = 0;
  if(x>z_imgW-z_frameW)
    x = z_imgW-z_frameW;
  if(y>z_imgH-z_frameH)
    y = z_imgH-z_frameH;
  setX(z_divFrame, x);
  setY(z_divFrame, y);
  setX(z_divZoom, -Math.floor(x * z_fltRatio));
  setY(z_divZoom, -Math.floor(y * z_fltRatio));
}

function __Z_mousemove(ev) {
  if(!z_bolZoomOK)
    return;
  x = ev.clientX - z_globalX;
  y = ev.clientY - z_globalY;
    
  if(x >= z_x1 && x < z_x2 && y >= z_y1 && y < z_y2) {
    clearTimeout(z_intTOFrame);
    z_intTOFrame = null;
    z_divFrame.style.border = "solid 1px #FFFFFF";
    if(!z_bolLocked)
      __Z_setPosition(x-z_x1-z_frameW/2, y-z_y1-z_frameH/2);
  } else {
    if(!z_intTOFrame)
      z_intTOFrame = setTimeout("__Z_hideframe();", 4000);
  }
}

function __Z_onclick(bolForce) {
  if(!z_bolZoomOK)
    return;
  if(z_bolLocked || bolForce) {
    z_bolLocked = false;
    if(z_intTO) {
      clearTimeout(z_intTO);
      z_intTO = null;
    }
  } else {
    z_bolLocked = true;
    if(z_intTO)
      clearTimeout(z_intTO);
    z_intTO = setTimeout("__Z_onclick(true);", 4000);
  }
}

function __Z_hideframe() {
  z_divFrame.style.border = "";
  z_intTOFrame = null;
}