
var divZoomerId = 'ZoomZoom';
var picZoomerId = 'ZoomPic';
var zoomTimeout = '';
var oPicture    = '';
var ratio       = 50/100;
var oRatio      = 50/100;
var RatioMax    = 5;
var RatioMin    = 0;

function loadDivZoomer( tPicture ){

  clearTimeout( zoomTimeout );

  oPicture = tPicture;
  // for preloading in IE......
  var picZoomer = document.getElementById( picZoomerId );
  var picSource = oPicture.name;
  picZoomer.src = picSource;
  // on lance le timer avant affichage
  zoomTimeout = setTimeout( 'loadPitureInZoomer()', 100 );

}

function loadPitureInZoomer(){

  // récupération des éléments
  var divZoomer = document.getElementById( divZoomerId );
  var picZoomer = document.getElementById( picZoomerId );
  // récupération des tailles
  var picWidth  = oPicture.offsetWidth;
  var picHeight = oPicture.offsetHeight;
  // application des ratios sur les tailles
  picZoomer.style.width   = picWidth * ( 1 + ratio ) + "px";
  picZoomer.style.height  = picHeight * ( 1 + ratio ) + "px";
  // top et left
  var picLeft = getLeft( oPicture ) - (  picWidth * ratio  ) / 2;// + "px"
  var picTop = oPicture.offsetTop + getTop( oPicture ) - (  picHeight * ratio  ) / 2;
  divZoomer.style.left  = picLeft + "px";
  divZoomer.style.top   = picTop + "px";

  // afin de ne pas géner si l'image était liée à un lien, nous vérifions les liens
  // sur l'image elle-même
  if ( oPicture.onclick && oPicture.onclick != '' ){
    picZoomer.onclick = oPicture.onclick;
  }

  // ou si l'image était entre deux balises <a href=''></a>
  // récupération du parentNode.
  var parent = oPicture.parentNode;
  if ( parent.tagName == 'a' || parent.tagName == 'A' ){
    // si le href est différent de vide
    if ( parent.href != '' ){
      // alors nous l'affectons à notre nouvelle image
      picZoomer.onclick = function (){
        window.location = parent.href;
      }
      picZoomer.style.cursor = 'pointer';
      // et si le parent est un lien a sur lequel il y a un onclick, alors...
    }else if( parent.onclick && parent.onclick != '' ){
      picZoomer.onclick = parent.onclick;
      picZoomer.style.cursor = 'pointer';
    }
  }

  // affichage de la div
  divZoomer.style.display = 'block';

  if (window.addEventListener)
  	window.addEventListener('DOMMouseScroll', wheel, false);
  window.onmousewheel = document.onmousewheel = wheel;

}

function hidePictureZoomer(){
  // si il y a un EventListener alors on enlève le listener sur la souris pour ne pas bloquer la molette
  if (window.removeEventListener)
    removeEventListener('DOMMouseScroll', wheel, false);
  // nous effaçons les eventlisteners
  window.onmousewheel = null;
  document.onmousewheel = null;

  // nous effaçons l'image
  var picZoomer = document.getElementById( picZoomerId );
  picZoomer.src = '';

  // et cachons la div
  var divZoomer = document.getElementById( divZoomerId );
  divZoomer.style.display = 'none';

  // enfin nous remettons le ratio à sa taille originale
  ratio = oRatio;
}

function changeRatio( delta ){

  // si la molette a été actionnée vers le bas...
	if (delta < 0){
	  // on diminue le ratio de zoom
    ratio = ratio - 0.5;
    // on applique les minimas
    if ( ratio < RatioMin ) ratio = RatioMin;
  }else{
    // si la molette a été actionnée vers l'avant (ou le haut)
    // nous augmentons le ratio pour faire un ZoomIn
    ratio = ratio + 0.5;
    // en appliquant les maximas
    if ( ratio > RatioMax ) ratio = RatioMax;
  }
  // et nous rechargeons l'image
  loadPitureInZoomer();
}


function wheel(event){
 var delta = 0;
	if (!event) event = window.event;
	if (event.wheelDelta) {
		delta = event.wheelDelta/120;
		if (window.opera) delta = -delta;
	} else if (event.detail) {
		delta = -event.detail/3;
	}
	if (delta)
		changeRatio(delta);
        if (event.preventDefault)
                event.preventDefault();
        event.returnValue = false;
        
}

/* Initialization code. */
/*
*/