
/* Javascript gérant le zoom in et le zoom out */
/*
* Constructeur
* pTarget balise image de la carte
* pGraphics zone de dessin
* fct fonction en sortie
*/
function OutilZoom(pTarget, pGraphics, fct) {    
    // maj des variables
    this.area = pGraphics.cnv;
    this.imgCarte = pTarget;
    this.nommap = pTarget.id;
    this.graphics = pGraphics;
    //Public - Propriétés
    this.startX = 0;
    this.startY = 0;
    //Public - Méthodes
    this.activate = bactivateZoom;
    this.desactivate = bdesactivateZoom;     
    //Private - Propriétés
    this.isdrawing = false;
    //Public - Evevement
    this.onEndDrawing = fct;
    //this.isZoomBox = true;    
    //La variable globale
    pZoom = this;
}

function mouseDownZoom(evt) {

    if (pZoom.isZoomBox) {
        pZoom.isdrawing = true;
        pZoom.startX = evt.clientX;
        pZoom.startY = evt.clientY;
    }
}
function mouseMoveZoom(evt) {
    pZoom.graphics.clear();
    if (pZoom.isdrawing) {
        var x1, y1, x1, x2;
        // gestion du dessin du cadre : inversement des coordonnées si besoin
        if (pZoom.startX > evt.clientX) {
            x1 = evt.clientX;
            x2 = pZoom.startX;
        } else {
            x1 = pZoom.startX;
            x2 = evt.clientX;
        }
        if (pZoom.startY > evt.clientY) {
            y1 = evt.clientY;
            y2 = pZoom.startY;
        } else {
            y1 = pZoom.startY;
            y2 = evt.clientY;
        }
        // gestion du cas du rectangle de largeur ou hauteur <=3 : créé un bug d'affichage du cadre
        // tracé de ligne dans ce cas
        if ((x2 - x1) > 3 && (y2 - y1) > 3) {
            pZoom.graphics.drawRect(x1, y1, x2 - x1, y2 - y1);
        } else {
            if (x2 - x1 <= 3) {
                pZoom.graphics.drawLine(pZoom.startX, pZoom.startY, pZoom.startX, evt.clientY);
            } else {
                if (y2 - y1 <= 3) {
                    pZoom.graphics.drawLine(pZoom.startX, pZoom.startY, evt.clientX, pZoom.startY);
                }
            }
        }
        pZoom.graphics.paint();
    }
}
function mouseUpZoom(evt) {
    pZoom.isdrawing = false;
    pZoom.graphics.clear();
	
	//Communication des coordonnées à la page cliente par la méthode "onEndDrawing"
    if (pZoom.onEndDrawing.length != 4) { //Test du nb d'arguments de la fonction
        alert("La gestion d'evenement n'est pas conforme !");
    } else {
        if (pZoom.isZoomBox) {
            pZoom.onEndDrawing(pZoom.startX, pZoom.startY, evt.clientX, evt.clientY);
        } else {
            pZoom.onEndDrawing(evt.clientX, evt.clientY, 0, 0);
        }
    }
}
function bactivateZoom(fct, pIsZoomBox) {
    pZoom.onEndDrawing = fct;
    pZoom.isZoomBox = pIsZoomBox;
    pZoom.graphics.setColor("#ff0000");
    pZoom.graphics.setStroke(3); 
    // il faut modifier le curseur sur la zone de dessin et sur la carte pour compatibilité IE/Firefox
    if (fct==zoomOut){
	    activeTool = OUTIL_ZOOM_MOINS;
    	if (document.all) {
    		(document.getElementById(pZoom.nommap)).style.cursor = "images/icons/ZoomOut.cur";
	    } else {
		    pZoom.area.style.cursor = "url('images/icons/ZoomOut.cur'), auto;";
    		(document.getElementById(pZoom.nommap)).style.cursor = "url('images/icons/ZoomOut.cur'), auto;";
	    }
    }else{
    	activeTool = OUTIL_ZOOM_PLUS;
    	if (document.all) {    	
    		(document.getElementById(pZoom.nommap)).style.cursor = "images/icons/ZoomIn.cur";
	    } else {
		    pZoom.area.style.cursor = "url('images/icons/ZoomIn.cur'), auto;";
    		(document.getElementById(pZoom.nommap)).style.cursor = "url('images/icons/ZoomIn.cur'), auto;";
	    }
    }
    
    
}
/* desactivation du zoom */
function bdesactivateZoom() {
    pZoom.area.style.cursor = "default";
    (document.getElementById(pZoom.nommap)).style.cursor = "default";
    activeTool = "null";
}


