//=============================//
// FONCTIONS pour PIXELISATION //
//=============================//
//--------------------------------------------
// Décompose le DIV parent en x carrés
//--------------------------------------------
// Entrée :
//  div_    : Nom DIV Parent
//  size_   : largeur en pixel des carrés
//--------------------------------------------
function DIV_GetPixel( div_, size_){
  var i, k;
  var Haut;
  var Larg;
  var szTmp;
  var szDiv;
  var Pix = (size_ > 0? size_: 1); // Taille par défaut 1 pixel
  var Obj = GetObjet(div_);

  if( Obj)
    szImg = Obj.innerHTML;

  Haut = ObjGetHauteur( div_);
  Larg = ObjGetLargeur( div_);

  for( i = 0; i < Haut; i +=Pix){
    szTmp = '_H'+ i;
    for( k = 0; k < Larg; k +=Pix){
      szDiv = div_ + szTmp +'_L' +k;
      DIV_Add( szDiv, szImg);
      ObjSetClipping( szDiv, i, k+Pix, i +Pix, k);
    }
  }
  //-- Affichage Info Nbr DIV
  // WriteInfo('<B class=RESULT>Cr&eacute;ation de '+ ((i*k)/(2*Pix)) +' &lt;DIV&gt; Pixel Terminée...<\/B>');
}

//---------------------------
// Cache tous les DIVs Pixel
//---------------------------
// Entrée :
//  div_    : Nom DIV Parent
//---------------------------
function DIV_HidePixel( div_){
  var i, k;
  var Larg;
  var Haut;
  var Pix;
  var szTmp;
  var szDiv = div_ +'_H0_L0';

  //-- Test si existe
  if( GetObjet( szDiv)){
    //-- Récup. Info parent
    Haut = ObjGetHauteur( div_);
    Larg = ObjGetLargeur( div_);
    Pix  = DIV_GetObjClip( div_, CLIP_RIGHT);

    //-- On Cache Tout
    for( i = 0; i < Haut; i +=Pix){
      szTmp = '_H'+ i;
      for( k = 0; k < Larg; k +=Pix){
        szDiv = div_ + szTmp +'_L' +k;
        ObjHide( szDiv);
      }
    }
  }
}

//-------------------------------------
// Supprime les DIV Pixel du document
//-------------------------------------
// Entrée :
//  div_    : Nom DIV Parent
//-------------------------------------
function DIV_RemovePixel( div_){
  var i, k;
  var Larg;
  var Haut;
  var Pix;
  var Obj;
  var Parent;
  var szTmp;
  var szDiv = div_ +'_H0_L0';

  //-- Test si existe
  if( GetObjet( szDiv)){
    //-- Récup. Info parent
    Haut = ObjGetHauteur( div_);
    Larg = ObjGetLargeur( div_);
    Pix  = DIV_GetObjClip( div_, CLIP_RIGHT);

    for( i = 0; i < Haut; i +=Pix){
      szTmp = '_H'+ i;
      for( k = 0; k < Larg; k +=Pix){
        szDiv = div_ + szTmp +'_L' +k;
        //-- Destroy du DIV
        Obj = GetObjet( szDiv);
        if( Obj)
          Parent = Obj.parentNode;
          if( Parent)
            Parent.removeChild( Obj);
      }
    }
  }
}
//--------------------------------------------------------
// Entrée :
//  div_    : Nom DIV Parent
//  x_      : Position X d'affichage
//  y_      : Position Y d'affichage
//  incx_   : distance entre DIV Pixel en X
//  incy_   : distance entre DIV Pixel en Y
//  size_   : largeur des DIV Pixel
//--------------------------------------------------------
function DIV_ShowPixel( div_, x_, y_, incx_, incy_, size_){
  var Obj;
  var Haut;
  var Larg;
  var PosX;
  var PosY;
  var IncX = incx_;
  var IncY = incy_;
  var Pix  = (size_ > 0? size_: 1); // Taille par défaut 1 pixel
  var szDiv = div_ +'_H0_L0';       // ID du DIV à voir

  //-- Test si existe
  Obj = GetObjet( szDiv);

  //-- Création des Lignes
  if( !Obj)
    DIV_GetPixel( div_, size_);

  //-- Récup. dimension
  Haut = ObjGetHauteur ( div_);
  Larg = ObjGetLargeur ( div_);
  Pix  = DIV_GetObjClip( div_, CLIP_RIGHT);

  //-- Affichage Ligne à ligne
  PosY = y_;
  for( i = 0; i < Haut; i +=Pix){
    PosX  = x_;         // replace en X
    szTmp = '_H'+ i;    // Nom Ligne suivante
    for( k = 0; k < Larg; k +=Pix){
      szDiv = div_ + szTmp +'_L' +k;
      ObjMoveTo( szDiv, PosX, PosY);
      ObjShow  ( szDiv, TopIndex);
      PosX += IncX;
    }
    PosY += IncY;       // Deplace en Y
  }
}

//====================================================
// EFFET de ???? Explosion peut être
//====================================================
//----------------------------------------------------
// Entrée :
//  div_    : Nom DIV Parent
//  x_      : Position X d'affichage
//  y_      : Position Y d'affichage
//  ecart_  : distance entre DIV Pixel
//  size_   : largeur des DIV Pixel
//----------------------------------------------------
function Pixel_Explosion( div_, x_, y_, ecart_, size_){
  var FinY;       // Pos Y affichage final
  var HFinal;     // Hauteur finale DIV affiché
  var NbrPix;     // Nbr DIV à afficher par ligne
  var Vide;       // Espace vide en pixel occupé
  var Pix = (size_ > 0? size_: 1); // Taille par défaut 1 pixel

  //-- Si en cours on stop
  Stop_Anim();

  //-- Init des Positions
  PosX = x_;
  PosY = y_;

  //-- Affiche la 1st fois, force création si non existant
  DIV_ShowPixel( div_, PosX, PosY, 0, 0, Pix);

  //-- Récup. dimension
  Haut = ObjGetHauteur ( div_);
  Larg = ObjGetLargeur ( div_);
  Pix  = DIV_GetObjClip( div_, CLIP_RIGHT);

  //-- Calcul pas d'avance
  NbrPix =  Haut/Pix;
  Vide   = (( NbrPix-1)) *ecart_;
  HFinal =  Haut +Vide;
  FinY   =  y_;
  FinY  -= (( HFinal -Haut)/2);
  PasY   = (PosY -FinY);
  PasY  /= ecart_;
  PasX   = PasY;

  //-- Envoi l'affichage
  Pixel_EtireDiv( div_, 0, ecart_, Delai);
}

//------------------------------------------------
// Entrée :
//  div_    : Nom DIV Parent
//  min_    : Ecart Mini entre DIV Pixel
//  max_    : Ecart Maxi entre DIV Pixel
//  delai_  : Delai de rappel de la fct
//------------------------------------------------
// Nota : Ne pas appeler la Fct directement
//------------------------------------------------
function Pixel_EtireDiv( div_, min_, max_, delai_){
  DIV_ShowPixel( div_, PosX, PosY, min_, min_);
  if( min_< max_){
    min_++;
    PosX -= PasX;
    PosY -= PasY;
    IdTimer = setTimeout("Pixel_EtireDiv('" +div_ +"'," +min_ +"," +max_ +"," +delai_ +")", delai_);
  }
  else{
    // IdTimer = setTimeout("Pixel_CompressDiv('" +div_ +"'," +min_ +"," +delai_ +")", delai_);
	  Stop_Anim();
	  DIV_RemovePixel( div_);
  }
}
//---------------------------------------------
// Entrée :
//  div_    : Nom DIV Parent
//  inc_    : Ecart entre DIV Pixel
//  delai_  : Delai de rappel de la fct
//---------------------------------------------
// Nota : Ne pas appeler la Fct directement
//---------------------------------------------
function Pixel_CompressDiv( div_, inc_, delai_){
  DIV_ShowPixel( div_, PosX, PosY, inc_, inc_);
  if( inc_> 0){
    inc_--;
    PosX += PasX;
    PosY += PasY;
    IdTimer = setTimeout("Pixel_CompressDiv('" +div_ +"'," +inc_ +"," +delai_ +")", delai_);
  }
  else{
//    DIV_HidePixel( div_);
    Stop_Anim();
  }
}
//=======================
// TOOLS
//=======================
//------------------
function ClearInfo(){
  WriteInfo('')
}
//-----------------------
function WriteInfo( txt_){
if( txt_)
  ObjWrite('INFO','<NOBR>'+ txt_);
else
  ObjWrite('INFO', '&nbsp;');
}
//-----------------
function InitPage(){
  //-- création du DIV Parent
  DIV_Add( 'BULLE', '<IMG SRC="bulle1.gif">');
  WriteInfo( 'Bonjour Bien &agrave;&nbsp;Vous...');
  //--  Clear Info pour tous les <A>
  for( var i=0; i <document.links.length; i++)
    document.links[i].onmouseout =ClearInfo;
}
