

function timeout_add(element,js){//timeout = 100
  if (timeout_add.arguments[2]==undefined){
    timeout = 100
  } else {
    timeout = timeout_add.arguments[2]
  }

  if (this.timeout_press!=undefined){
    window.clearTimeout(this.timeout_press);
  }
  this.timeout_press = window.setTimeout(js,timeout)
}

/**
 * move_to
 *
 * D?place un ?l?ment ? cot? d'un autre
 * @id_element_src : id de l'element ? d?plac?
 * @id_element_dest : id de l'element ? cot? du quelle on va position l'autre ?l?ment
 * @pos_h : peut ?tre "haut" ou "bas"
 * @pos_v : peut ?tre "droite" ou "gauche"
 * @dec_h : d?calage horizontal en pixel de id_element_src par rapport ? id_element_dest
 * @dec_v : d?calage vertical en pixel de id_element_src par rapport ? id_element_dest
 **/

function move_to(id_element_src,id_element_dest,pos_h,pos_v,dec_h,dec_v){
  element_dest = document.getElementById(id_element_dest);
  element_src = document.getElementById(id_element_src);

  element_src.style.position="absolute";
  element_src.style.display="block";


  //Hauteur et largeur de la liste rapide
  //element_src.style.display="block"
  var element_src_hauteur=element_src.offsetHeight;
  var element_src_largeur=element_src.offsetWidth;

  //Hauteur et largeur de l'element actif
  var element_dest_hauteur=element_dest.offsetHeight;
  var element_dest_largeur=element_dest.offsetWidth;

  // Lecture de la position de element_dest
  var topNode = element_dest;
  var element_dest_top = 0;
  var element_dest_left = 0;
  while(topNode){
    if ( !isNaN(topNode.offsetTop) )
      element_dest_top += topNode.offsetTop;
    if ( !isNaN(topNode.offsetLeft) )
      element_dest_left += topNode.offsetLeft;
    topNode = topNode.offsetParent;
  }

  // Calcul de la position de element_src
  if (pos_v=="haut"){
    element_src_top = element_dest_top-element_src_hauteur-dec_v
  } else if (pos_v=="bas") { // bas
    element_src_top = element_dest_top+element_dest_hauteur+dec_v
  } else {
    element_src_top = element_dest_top
  }

  if (pos_h=="gauche"){
    element_src_left = element_dest_left-element_src_largeur-dec_h
  } else if (pos_h=="droite") { // droite
    element_src_left = element_dest_left+element_dest_largeur+dec_h
  } else {
    element_src_left = element_dest_left
  }

  // Positionnement de element_src
  element_src.style.top=element_src_top+"px";
  element_src.style.left=element_src_left+"px";
}


/**
 * Effet div d?roulant
 */

var list_boite_depliante = Array()
function boite_depliante(id){
  this.obj = $(id);
  this.obj.style.display='block';
  this.obj.style.clip="rect(0px,0px,0px,0px)";
  this.index_boite_depliante = list_boite_depliante.length
  list_boite_depliante[this.index_boite_depliante] = this
  this.directionX = 'left'
  this.directionY = 'bottom'
  this.intervalX = 5;
  this.intervalY = 5;
  this.vitesseX = null
  this.vitesseY = null
  //this.obj.onclick = this.onclick;
}
boite_depliante.prototype.set = function(key,value){
  this[key] = value;
}
boite_depliante.prototype.show = function(){
  if (!this.vitesseX) this.intervalX = 2000
  else  this.intervalX = (this.obj.offsetWidth/this.vitesseX);
  if (!this.vitesseY) this.intervalY = 2000
  else  this.intervalY = (this.obj.offsetHeight/this.vitesseY);
  this.start_slide();
}
boite_depliante.prototype.hide = function(){
  if (!this.vitesseX) this.intervalX = 2000
  else  this.intervalX = -(this.obj.offsetWidth/this.vitesseX);
  if (!this.vitesseY) this.intervalY = 2000
  else  this.intervalY = -(this.obj.offsetHeight/this.vitesseY);
  this.start_slide();
}
boite_depliante.prototype.start_slide = function(){
  if ( (this.directionX == 'left' && this.intervalX>0) || (this.directionX == 'right' && this.intervalX<0) ) {
    x = 0 ;
  } else {
    x = this.obj.offsetWidth;
  }
  if ( (this.directionY == 'bottom' && this.intervalY>0) || (this.directionY == 'top' && this.intervalY<0) ) {
    y = 0 ;
  } else {
    y = this.obj.offsetHeight;
  }
  clearTimeout(this.slidetimer);
  this.slide(x , y, 0);
}
boite_depliante.prototype.normalizeX = function(clipX){
    clipX = (clipX < 0 ? 0 : clipX );
    clipX = (clipX > this.obj.offsetWidth ? this.obj.offsetWidth : clipX );
    return clipX;
}
boite_depliante.prototype.normalizeY = function(clipY){
    clipY = (clipY < 0 ? 0 : clipY );
    clipY = (clipY > this.obj.offsetHeight ? this.obj.offsetHeight : clipY );
    return clipY;
}
boite_depliante.prototype.slide = function(clipX, clipY, opacity)
{
  sensX = (this.intervalX/Math.abs(this.intervalX))
  sensY = (this.intervalY/Math.abs(this.intervalY))

  condWX  = (sensX>0 && clipX*sensX < this.obj.offsetWidth) || (sensX<0 && clipX*sensX < 0)
  condZX  = (sensX>0 && clipX*sensX>0) || (sensX<0 && clipX*sensX > this.obj.offsetWidth )

  condHY  = (sensY>0 && clipY*sensY < this.obj.offsetHeight) || (sensY<0 && clipY*sensY < 0)
  condZY  = (sensY>0 && clipY*sensY>0) || (sensY<0 && clipY*sensY > this.obj.offsetHeight)

  if (this.directionX == 'left' && this.directionY == 'bottom' && ( condWX || condHY ) )
  {
    /*if (document.all)
    {
      opacity += 10;
      this.obj.filters.item('DXImageTransform.Microsoft.alpha').opacity = opacity;
    }*/

    clipX += this.intervalX;
    clipY += this.intervalY;
    clipX = this.normalizeX(clipX)
    clipY = this.normalizeY(clipY)

    this.obj.style.clip = "rect(auto, " + clipX + "px, " + clipY + "px, auto)";
    this.slidetimer = setTimeout("list_boite_depliante["+this.index_boite_depliante+"].slide(" + clipX + ", " + clipY + ", " + opacity + ");", 0);
  }
  else if (this.directionX == 'right' && this.directionY == 'bottom' && ( condZX || condHY ) )
  {
    /*if (document.all)
    {
      opacity += 10;
      this.obj.filters.item('DXImageTransform.Microsoft.alpha').opacity = opacity;
    }*/

    clipX -= this.intervalX;
    clipY += this.intervalY;
    clipX = this.normalizeX(clipX)
    clipY = this.normalizeY(clipY)

    this.obj.style.clip = "rect(auto, " + this.obj.offsetWidth + "px, " + clipY + "px, " + clipX + "px)";
    this.slidetimer = setTimeout("list_boite_depliante["+this.index_boite_depliante+"].slide(" + clipX + ", " + clipY + ", " + opacity + ");", 0);
  }
  else if (this.directionX == 'left' && this.directionY == 'top' && ( condWX || condZY ))
  {
    /*if (document.all)
    {
      opacity += 10;
      this.obj.filters.item('DXImageTransform.Microsoft.alpha').opacity = opacity;
    }*/

    clipX += this.intervalX;
    clipY -= this.intervalY;
    clipX = this.normalizeX(clipX)
    clipY = this.normalizeY(clipY)

    this.obj.style.clip = "rect(" + clipY + "px , " + clipX + "px, " + this.obj.offsetHeight + "px , auto)";
    this.slidetimer = setTimeout("list_boite_depliante["+this.index_boite_depliante+"].slide(" + clipX + ", " + clipY + ", " + opacity + ");", 0);
  }
  else if (this.directionX == 'right' && this.directionY == 'top' && ( condZX || condZY ) )
  {
    /*if (document.all)
    {
      opacity += 10;
      this.obj.filters.item('DXImageTransform.Microsoft.alpha').opacity = opacity;
    }*/

    clipX -= this.intervalX;
    clipY -= this.intervalY;
    clipX = this.normalizeX(clipX)
    clipY = this.normalizeY(clipY)

    this.obj.style.clip = "rect(" + clipY + "px , " + this.obj.offsetWidth + "px, " + this.obj.offsetHeight + "px, " + clipX + "px)";
    this.slidetimer = setTimeout("list_boite_depliante["+this.index_boite_depliante+"].slide(" + clipX + ", " + clipY + ", " + opacity + ");", 0);
  }
  else
  {
    this.stop_slide();
  }
}
boite_depliante.prototype.stop_slide = function()
{
  clearTimeout(this.slidetimer);



  if ( (this.vitesseY && this.intervalY>0) || (this.vitesseX && this.intervalX>0))
    this.obj.style.clip = 'rect(auto, auto, auto, auto)';
  else
    this.obj.style.clip = 'rect(0px , 0px ,0px ,0px )';

  /*if (document.all)
  {
    this.obj.filters.item('DXImageTransform.Microsoft.alpha').opacity = 100;
  }*/

}
boite_depliante.prototype.destroy = function(){
  clearTimeout(this.destroytimer);
  this.obj.style.display="none";
  this.obj.parentNode.removeChild(this.obj);
}

