function xDHTML(NomBloc){
	if( document.layers ){
		this.xMontrer = 'show';
		this.xCacher = 'hide';
		this.xUnite = '';
	}else{
		this.xMontrer = 'visible';
		this.xCacher = 'hidden';
		this.xUnite = 'px';
	}
	if( document.getElementById ){
		this.xBloc = document.getElementById( NomBloc );
		this.xStyle = this.xBloc.style;
	}else if( document.all ){
		this.xBloc = document.all( NomBloc );
		this.xStyle = this.xBloc.style;
	}else{
		this.xBloc = this.xStyle = null;
	}
	
	return this;
}
//changer image
xDHTML.prototype.changeImage = function(cheminImage){
  var blocImg = this.xBloc.firstChild;
  //var cheminImageBloc = blocImg.getAttribute("src");
  var cheminImageBloc = cheminImage;
  blocImg.setAttribute("src", cheminImageBloc);	
}

//getter position
xDHTML.prototype.getTop = function(){
  return parseInt(this.xStyle.top);
}
xDHTML.prototype.getLeft = function(){
  return parseInt(this.xStyle.left);
}
xDHTML.prototype.getDown = function(){
  var Bas = parseInt(this.xStyle.top);
  Bas = Bas + parseInt(this.xStyle.height);
  return (Bas);
}
xDHTML.prototype.getRight = function(){
  var Droite = parseInt(this.xStyle.left);
  Droite = Droite + parseInt(this.xStyle.width);
  return (Droite);
}

//hitTest
xDHTML.prototype.HitTest = function ( blocCible ){
//recuperation du bloc cible
xBlocCible = new xDHTML( blocCible );
  //debut du hitTest
  if(this.getTop()>=xBlocCible.getTop()){
    if(this.getRight() >= xBlocCible.getLeft() && this.getRight() <= xBlocCible.getRight()){
      if(this.getTop()<=xBlocCible.getDown()){
        return( 'true' );
      }else{
        return( 'false' );
      }
    }else if(this.getLeft() >= xBlocCible.getLeft() && this.getLeft() <= xBlocCible.getRight()){
      if(this.getTop()<=xBlocCible.getDown()){
        return( 'true' );
      }else{
        return( 'false' );
      }
    }else if(this.getLeft() <= xBlocCible.getLeft() && this.getRight() >= xBlocCible.getRight()){
      if(this.getTop()<=xBlocCible.getDown()){
        return( 'true' );
      }else{
        return( 'false' );
      }
    }
  }

  if(this.getDown()<=xBlocCible.getDown()){
    if(this.getRight() >= xBlocCible.getLeft() && this.getRight() <= xBlocCible.getRight()){
      if(this.getDown()>=xBlocCible.getTop()){
        return( 'true' );
      }else{
        return( 'false' );
      }
    }else if(this.getLeft() >= xBlocCible.getLeft() && this.getLeft() <= xBlocCible.getRight()){
      if(this.getDown()>=xBlocCible.getTop()){
        return( 'true' );
      }else{
        return( 'false' );
      }
    }else if(this.getLeft() <= xBlocCible.getLeft() && this.getRight() >= xBlocCible.getRight()){
      if(this.getDown()>=xBlocCible.getTop()){
        return( 'true' );
      }else{
        return( 'false' );
      }
    }
  }

  if(this.getLeft()>=xBlocCible.getLeft()){
    if(this.getTop() <= xBlocCible.getDown() && this.getTop() >= xBlocCible.getTop()){
      if(this.getLeft()<=xBlocCible.getRight()){
        return( 'true' );
      }else{
        return( 'false' );
      }
    }else if(this.getDown() <= xBlocCible.getDown() && this.getDown() >= xBlocCible.getTop()){
     if(this.getLeft()<=xBlocCible.getRight()){
        return( 'true' );
      }else{
        return( 'false' );
      }
    }else if(this.getDown() >= xBlocCible.getDown() && this.getTop() <= xBlocCible.getTop()){
      if(this.getLeft()<=xBlocCible.getRight()){
        return( 'true' );
      }else{
        return( 'false' );
      }
    }
  }
  
  if(this.getRight()<=xBlocCible.getRight()){
    if(this.getTop() <= xBlocCible.getDown() && this.getTop() >= xBlocCible.getTop()){
      if(this.getRight()>=xBlocCible.getLeft()){
        return( 'true' );
      }else{
        return( 'false' );
      }
    }else if(this.getDown() <= xBlocCible.getDown() && this.getDown() >= xBlocCible.getTop()){
      if(this.getRight()>=xBlocCible.getLeft()){
        return( 'true' );
      }else{
        return( 'false' );
      }
    }else if(this.getDown() >= xBlocCible.getDown() && this.getTop() <= xBlocCible.getTop()){
      if(this.getRight()>=xBlocCible.getLeft()){
        return( 'true' );
      }else{
        return( 'false' );
      }
    }
  }
  return( 'false' );
}


xDHTML.prototype.MoveTo = function( nX, nY ){
	if( this.xStyle ){
		this.xStyle.left = parseInt(nX) + this.xUnite;
		this.xStyle.top = parseInt(nY) + this.xUnite;
	}
}

xDHTML.prototype.MoveToElastic = function( nX, nY ){
	//initialisation
	if( this.xStyle ){
		this.posX = parseInt(this.xStyle.left);
		this.posY = parseInt(this.xStyle.top);
	}
	this.vit_x = 0;
	this.vit_y = 0;
	this.arriveX = 500;
	this.arriveY = 100;
	this.frottements = 0.8;
	this.cste_elastic = 0.3;
	this.itx = 0;
	this.maxItx = 200;
	//lancement de l'animation
	this.tempoMoveTo = null;
	this.AnimationMoveToElastic();
}

xDHTML.prototype.AnimationMoveToElastic = function(){
	if( this.xStyle ){
		this.posX = parseInt(this.xStyle.left);
		this.posY = parseInt(this.xStyle.top);
	}
	//calcul de déplacement pour la prochaime position
	this.vit_x = this.vit_x * this.frottements + ( this.arriveX - this.posX )*this.cste_elastic ;
	this.vit_y = this.vit_y * this.frottements + ( this.arriveY - this.posY )*this.cste_elastic ;
	//lancement du deplacement
	this.MoveBy(this.vit_x,this.vit_y);
	//debut et arret de la boucle recursive
	if( this.posX >= (this.arriveX-1) && this.posX <= (this.arriveX+1) && this.posY >= (this.arriveY-1) && this.posY <= (this.arriveY+1) ){
		clearTimeout(this.tempoMoveTo);
		this.tempoMoveTo = null;
	}else{
		/********************************problèmes de cohérence dans le parseur Javascript
		//this.tempoMoveTo = setTimeout("this.AnimationMoveToElastic()",10);
											*********/
		var self = this;
		this.tempoMoveTo = setTimeout(function(){self.AnimationMoveToElastic();}, 10)
		
	}
}

xDHTML.prototype.MoveBy = function ( nX, nY ){
	if( this.xStyle ){
		this.posX = parseInt(this.xStyle.left);
		this.posY = parseInt(this.xStyle.top);
		this.xStyle.left = this.posX + parseInt(nX) + this.xUnite;
		this.xStyle.top = this.posY + parseInt(nY) + this.xUnite;
	}
}