
/* Méthode permettant de gérer le deplacement de la carte par drag&drop */
/* Constructeur
* target : balise image de la carte
* graphics : zone graphique dans laquelle on dessine
* fct : fonction appelée à la fin du drag&drop
*/
function OutilDeplacement(target, graphics, fct) {
    this.area = graphics.cnv;
    this.nommap = target.id;
    //Public - Propriétés
    this.startx = 0;
    this.starty = 0;
    this.dx = 0;
    this.dy = 0;
    //Public - Méthodes
    this.activate = bactivateDep;
    this.desactivate = bdesactivateDep;  
    //Private - Propriétés
    this.isdrawing = false;
    //Public - Evevement
    this.onEndDrawing = fct;
    //La variable globale
    pDeplacement = this;
}
function mouseDownDep(evt) {
	if (document.all) {
    	(document.getElementById(pDeplacement.nommap)).style.cursor = "images/icons/PanMove.cur";
	} else {
	    pDeplacement.area.style.cursor = "url('images/icons/PanMove.cur'), auto; ";
	    (document.getElementById(pDeplacement.nommap)).style.cursor = "url('images/icons/PanMove.cur'), auto; ";
	}
    pDeplacement.isdrawing = true;
    pDeplacement.startx = evt.clientX; //on n'a pas besoin d'utiliser l'offsettop et left car c'est le dx et dy qui nous interesse
    pDeplacement.starty = evt.clientY;
    document.getElementById(pDeplacement.nommap).style.position = "absolute";
}
function mouseMoveDep(evt) {
    if (pDeplacement.isdrawing) {
        pDeplacement.dx = evt.clientX - pDeplacement.startx;
        pDeplacement.dy = evt.clientY - pDeplacement.starty;
        document.getElementById(pDeplacement.nommap).style.top = pDeplacement.dy;
        document.getElementById(pDeplacement.nommap).style.left = pDeplacement.dx;
        document.getElementById("divDessin").style.top = pDeplacement.dy;
        document.getElementById("divDessin").style.left = pDeplacement.dx;
    }
}
function mouseUpDep(evt) {
		if (document.all) {
	    (document.getElementById(pDeplacement.nommap)).style.cursor = "images/icons/Pan.cur";
		} else {
	    pDeplacement.area.style.cursor = "url('images/icons/Pan.cur'), auto; ";
	    (document.getElementById(pDeplacement.nommap)).style.cursor = "url('images/icons/Pan.cur'), auto; ";
		}
    pDeplacement.isdrawing = false;
    /*document.getElementById(pDeplacement.nommap).style.top = 0;
    document.getElementById(pDeplacement.nommap).style.left = 0;*/
    document.getElementById("divDessin").style.top = 0;
    document.getElementById("divDessin").style.left = 0;
    if (pDeplacement.onEndDrawing.length != 2) { //Test du nb d'arguments de la fonction
        alert("La gestion d'evenement n'est pas conforme !");
    } else {
        pDeplacement.onEndDrawing(pDeplacement.dx, pDeplacement.dy);
    }
}
/* activation du déplacement */
function bactivateDep() {
		if (document.all) {
	    (document.getElementById(pDeplacement.nommap)).style.cursor = "images/icons/Pan.cur";
		} else {
	    pDeplacement.area.style.cursor = "url('images/icons/Pan.cur'), auto; ";
	    (document.getElementById(pDeplacement.nommap)).style.cursor = "url('images/icons/Pan.cur'), auto; ";
		}
    activeTool = OUTIL_DEPLACEMENT;
}
/* desactivation du déplacement */
function bdesactivateDep() {
    pDeplacement.area.style.cursor = "default";
    document.getElementById(pDeplacement.nommap).style.cursor = "default";
    activeTool = "null";
}


