/** 
*/
/*	Script: gsMapper.refevent.js
		
		Dependencies:
        <Point>, <gsMapReference>
        
		Class: gsRefEvent
        Gestion des évènements souris sur la carte de référence.
        

        Example:
			(start code)
            var gsRef = new Class({
            	initialize: function(){
                    this.evt = new gsRefEvent(this);
            	},
                ...
            });
			(end)
 */
 
var GSMAP_DOUBLECLICK = 200;

var gsRefEvent = new Class({
/*  Function: initialize
        Initialise l'objet Event (appel automatique lors de la crétion de l'objet).
        Capture le mouseDown sur la carte.
        
        Parameters:
        gRef - Instance de l'objet gsMapReference.
    */
	initialize: function(gRef){
		this.refMap = gRef;
        this.ptDown = this.ptMove = this.ptUp = new Point();
		this.refMap.refbox.onmousedown = this.start.bindAsEventListener(this);
		this.refMap.refcross.onmousedown = this.start.bindAsEventListener(this);
		//this.map._map.onmousedown = this.start.bindAsEventListener(this);
	},
/*  Function: start
        

        Parameters:
        evt - Evenement souris permet de récupérer le X,Y.
    */
	start: function(evt){
		this.ptDown = this.getXY(evt);     
        this.detachOnMouseUp = true;
        this.refMap.refMouseDown(this.ptDown);
        document.onmousemove = this.drag.bindAsEventListener(this);
		document.onmouseup   = this.end.bindAsEventListener(this);
        //document.ondblclick  = this.dblend.bindAsEventListener(this);
		return false;
	},
	drag: function(evt){
        this.ptMove = this.getXY(evt);
        this.refMap.refMouseMove(this.ptMove, this.ptDown);
		return false;
	},
	end: function(evt){
        this.ptUp = this.getXY(evt);
        this.refMap.refMouseUp(this.ptUp, this.ptDown);
        if(this.detachOnMouseUp) this.clear();
		return false;
	},
    clear: function(){
		document.onmousemove = null;
		document.onmouseup   = null;
        document.ondblclick  = null;
        this.ptDown.set();
        this.ptMove.set();
        this.ptUp.set();
    },
	getXY: function(evt) {
		var e = evt || window.event;

	  	if(typeof(e.clientX) != "undefined") {
            //passe ici avec IE et FF
	  		eX =  e.clientX;
	  		eY =  e.clientY;
	  	}else{
	  		eX = e.x;
	  		eY = e.y;
	  	}
	    return new Point(eX - this.refMap.left, eY - this.refMap.top);  
	    return new Point(eX, eY );   
	}    
});

