var L_Deb;
var L_Fin;
var H_Deb;
var H_Fin;
var Compteur;
var Trame = 10;
var Delay = 1;
var DelayAuto = 1000;
var ModeAuto  = false;
var ZoomImg;
var ZoomDiv;
var ID_Timer =0;
var Rap    = new Point();
var Inc    = new Point();
var Pos    = new Point();
var PosFin = new Point();
var PosDeb = new Point();
var ImgTmp = new Image();
// Merçi la compatibilité
var DOM = (document.getElementById ? true : false);
var IE  = (document.all && !DOM ? true : false);
var NS4 = (document.layers ? true : false);
var NAV_OK   = ( DOM || IE || NS4);
var NETSCAPE = (navigator.appName == "Netscape");

//--------------------
function Point(x_, y_)
{
  var Arg = arguments;
  this.x = 0; this.y = 0;  
  if( Arg[1] != null) this.x = x_;
  if( Arg[2] != null) this.y = y_;
}
//---------------------
function GetObjet(div_)
{
  if( DOM) return document.getElementById(div_);
  if( IE)  return document.all[div_];
  if( NS4) return document.layers[div_];
  return(null);
}
//---------------------
function GetStyle(div_)
{
  return (NS4 ? GetObjet(div_) : GetObjet(div_).style);
}
//------------------------
function ObjGetPosX( div_)
{
  var Obj = null;
  if( div_)
  {
    Obj = GetObjet( div_);
    if( Obj)
      return (NS4 ? Obj.pageX : Obj.offsetLeft);
  }
  return(null);
}
//------------------------
function ObjGetPosY( div_)
{
  var Obj = null;
  if( div_)
  {
    Obj = GetObjet( div_);
    if( Obj)
      return (NS4 ? Obj.pageY : Obj.offsetTop);
  }
  return(null);
}
//-----------------------------
function ObjWrite( div_, html_)
{
  var Obj;
  Obj = GetObjet( div_);
  if( Obj) with( Obj)
  {
    if( !NS4)
	{
      innerHTML = html_;
    }
    else
	{
      document.open();
      document.write( html_);
      document.close();
    }
  }
}
//---------------------------
function ObjGetLargeur( div_)
{
  var Obj  = null;
  var Larg = 0;
  Obj = GetObjet( div_);
  if( Obj)
  {
    if( NETSCAPE)
	{
      if( NS4)
        Larg= Obj.clip.width;
      else
        Larg= Obj.offsetWidth;
    }
    else
      Larg= Obj.scrollWidth;
  }
  return( Larg);
}
//---------------------------
function ObjGetHauteur( div_)
{
  var Obj  = null;
  var Haut = 0;
  Obj = GetObjet( div_);
  if( Obj)
  {
    if( NETSCAPE)
	{
      if( NS4)
        Haut= Obj.clip.height;
      else
        Haut= Obj.offsetHeight;
    }
    else
      Haut= Obj.scrollHeight;
  }
  return( Haut);
}
//-------------------------------
function ObjMoveTo( div_, x_, y_)
{
  var Obj = null;
  var Arg = arguments;
  if( div_)
  {
    Obj = GetStyle( div_);
    if( Obj)
	{
      if( NETSCAPE)
	  {
        if( Arg[1] != null) Obj.left = x_;
        if( Arg[2] != null) Obj.top  = y_;
      }
      else{
        if( Arg[1] != null) Obj.pixelLeft = x_;
        if( Arg[2] != null) Obj.pixelTop  = y_;
      }
    }
  }
}
//---------------------
function ObjHide( div_)
{
  var Obj = null;
  if( div_)
  {
    Obj = GetStyle( div_);
    if( Obj)
	{
      Obj.visibility= "hidden";
      Obj.zIndex = 0;
    }
  }
  return(true);
}
//-------------------------
function ObjShow( div_, z_)
{
  var Obj = null;
  if( div_)
  {
    Obj = GetStyle( div_);
    if( Obj){
      Obj.visibility = "visible";
      if( arguments[1] != null)
        Obj.zIndex = z_;
      else
        Obj.zIndex = 1;
    }
  }
  return(true);
}
//-----------------------------
function ObjWrite( div_, html_)
{
  var Obj;
  Obj = GetObjet( div_);
  if( Obj) with( Obj)
  {
    if( !NS4)
	{
      innerHTML = html_;
    }
    else
	{
      document.open();
      document.write( html_);
      document.close();
    }
  }
}
//-----------------
function ZoomMoins()
{
  var Larg;
  var Haut;
  var Html  ="";
  Compteur--;

  //-- Calcul nouveaux paramètres --
  Pos.x = PosDeb.x +parseInt( Compteur *Inc.x);
  Pos.y = PosDeb.y +parseInt( Compteur *Inc.y);
  Larg = L_Deb +parseInt( Compteur *Rap.x);
  Haut = H_Deb +parseInt( Compteur *Rap.y);

  Html = '<TABLE BORDER=1 BGCOLOR="#ffffff"><TR><TD><IMG SRC="' +ZoomImg +'" HEIGHT='+ Haut +' WIDTH=' +Larg +'></TD></TR></TABLE>';
  ObjWrite ( ZoomDiv, Html);
  ObjMoveTo( ZoomDiv, Pos.x, Pos.y);

  if( Larg > L_Deb)
    ID_Timer = setTimeout( ZoomMoins, Delay);
  else
  {
    ObjHide  ( ZoomDiv);
    ObjWrite ( ZoomDiv,"");
  }
}
//-----------------------
function StartZoomMoins()
{
  clearTimeout(ID_Timer);
  ZoomMoins();
}
//-----------------
function ZoomPlus()
{
  var Larg;
  var Haut;
  var Html  ="";
  var Text  ="";
  Compteur++;

  //-- Calcul nouveaux paramètres --
  Pos.x = PosDeb.x +parseInt( Compteur *Inc.x);
  Pos.y = PosDeb.y +parseInt( Compteur *Inc.y);
  Larg = L_Deb +parseInt( Compteur *Rap.x);
  Haut = H_Deb +parseInt( Compteur *Rap.y);
  
  ObjShow  ( ZoomDiv, 1);

  
    Text = '<IMG SRC="' +ZoomImg +'" border=0  ALT="Mille, canons de perçage, pompes à engrenage, pompes volumétriques, outillage pour fonderie et fonderie sous pression, métrologie. : Mécanique de précision">';
    if( !ModeAuto)
	{
      Html = '<TABLE BORDER=1 BGCOLOR="#ffffff"><TR><TD>'+ Text +'</a></TD></TR></TABLE>';
	}  
    else
	{
      Html = '<TABLE BORDER=1 BGCOLOR="#ffffff"><TR><TD>'+ Text +'</TD></TR></TABLE>';
	}  
    ObjWrite ( ZoomDiv, Html);
    ObjMoveTo( ZoomDiv, PosFin.x, PosFin.y);
    window.status ="FIN";
    if( ModeAuto)
	{
      ID_Timer= setTimeout( StartZoomMoins, DelayAuto);
	}  
  
}
//---------------------------------
function StartZoomPlus( div_, url_)
{
  ZoomImg = url_;
  ZoomDiv = div_;
  clearTimeout(ID_Timer);
  ZoomPlus();
}
//------------------
function GetPosFin()
{
  var Larg;
  var Haut;

  //-- Récup Position Image Finale --
  Larg  = ObjGetLargeur( 'FINAL');
  Haut  = ObjGetHauteur( 'FINAL');
  PosFin.x = ObjGetPosX( 'FINAL') +Larg /2;
  PosFin.y = ObjGetPosY( 'FINAL') +Haut /2;

  //-- Tiens compte de la largeur du cadre
  PosFin.x -= 4;
  PosFin.y -= 4;
}
//------------------------------
function StartImage( div_, url_)
{
  var Html  ="";
  ImgTmp.src = url_;
  Compteur=0;

  //-- Création Image dans DIV caché --
  Html = '<IMG NAME="Result" ID="Result" SRC="' +url_ +'">';
  ObjHide  ( 'Temp');
  ObjWrite ( 'Temp', Html);

  //-- Récup Position Image Finale --
  GetPosFin();
  
  //-- Récup Position Image Départ --
  PosDeb.x = ObjGetPosX( div_);
  PosDeb.y = ObjGetPosY( div_);

  //-- Récup Taille Image Départ --
  L_Deb = ObjGetLargeur( div_);
  H_Deb = ObjGetHauteur( div_);

  //-- Récup. taille Image Finale --
  L_Fin = ObjGetLargeur( 'Temp');
  H_Fin = ObjGetHauteur( 'Temp');
  PosFin.x -= L_Fin/2;
  PosFin.y -= H_Fin/2;

  //-- Calcul paramètres déplacement --
  Rap.x  = (L_Fin - L_Deb) / Trame;
  Rap.y  = (H_Fin - H_Deb) / Trame;
  Inc.x  = (PosFin.x - PosDeb.x) / Trame;
  Inc.y  = (PosFin.y - PosDeb.y) / Trame;

  //-- Lance le Zoom --
  StartZoomPlus( 'Temp', url_);

}
//------------------------------
 function prechargimg() 
 {
var doc=document;
if(doc.images){ if(!doc.precharg) doc.precharg=new Array();
var i,j=doc.precharg.length,x=prechargimg.arguments; for(i=0; i<x.length; i++)
if (x[i].indexOf("#")!=0){ doc.precharg[j]=new Image; doc.precharg[j++].src=x[i];}}
}
