function Pan(wsnav){
    this.id = "pan";
    this.toggle = true;
    this.wsnav = wsnav;
    wsnav.tools[this.id] = this;
    this.selected = false;
    this.ie=document.all;
    this.nn6=document.getElementById&&!document.all;
    this.drawing=false;
    this.pixelStartX;
    this.pixelStartY;
    this.tx;
    this.ty;
}

Pan.prototype.maponmousedown=function(e){
    if (!e) var e = window.event;
    fobj = this.wsnav.getImg();
    this.drawing = true;
    this.tx = parseInt(fobj.style.left+0);
    this.ty = parseInt(fobj.style.top+0);
    this.pixelStartX = this.nn6 ? e.clientX : event.clientX;
    this.pixelStartY = this.nn6 ? e.clientY : event.clientY;

    //change cursor to grabbing
    document.getElementById("divMap").style.cursor = "url("+this.wsnav.baseHREF+"/wsnav/images/pan/grabbing.cur), -moz-grabbing";
    return false;
}

Pan.prototype.maponmouseup=function(e){
    if (this.drawing){
        //change cursor to grab hand
        document.getElementById("divMap").style.cursor = "url("+this.wsnav.baseHREF+"/wsnav/images/pan/grab.cur), -moz-grab";

        if (!e) var e = window.event;
        this.wsnav.loadingAction(true);
        this.drawing=false;
        var xDeplacement = (e.clientX - this.pixelStartX);
        var yDeplacement = (e.clientY - this.pixelStartY)*-1;
        var oldCenterX = this.wsnav.xmin+(this.wsnav.xmax - this.wsnav.xmin)/2;
        var oldCenterY = this.wsnav.ymin+(this.wsnav.ymax - this.wsnav.ymin)/2;
        var newCenterX = oldCenterX- ((xDeplacement * (this.wsnav.xmax-this.wsnav.xmin)) / this.wsnav.mapWidth);
        var newCenterY = oldCenterY- ((yDeplacement * (this.wsnav.ymax-this.wsnav.ymin)) / this.wsnav.mapHeight);

        if(Math.abs(xDeplacement)<=2&&Math.abs(yDeplacement)<=2){
            var pixelX = this.pixelStartX-this.wsnav.getGlobalImgX();
            var pixelY = this.pixelStartY-this.wsnav.getGlobalImgY();
            var xp = this.wsnav.xmin+(pixelX*(this.wsnav.xmax-this.wsnav.xmin)/this.wsnav.mapWidth);
            var yp = this.wsnav.ymin+((this.wsnav.mapHeight-pixelY)*(this.wsnav.ymax-this.wsnav.ymin)/this.wsnav.mapHeight);

            this.wsnav.modifyImage((this.wsnav.mapWidth/2)-pixelX,(this.wsnav.mapHeight/2)-pixelY,this.wsnav.mapWidth,this.wsnav.mapHeight);

            this.wsnav.setCenter(xp,yp);
            this.wsnav.refreshMap();
        }else{
            this.wsnav.setCenter(newCenterX,newCenterY);
            this.wsnav.refreshMap();
        }
    }
}

Pan.prototype.maponmousemove=function(e){
    if (this.drawing){
        if (!e) var e = window.event;
        fobj = this.wsnav.getImg();
        fobj.style.left = this.nn6 ? this.tx + e.clientX - this.pixelStartX : this.tx + event.clientX - this.pixelStartX;
        fobj.style.top  = this.nn6 ? this.ty + e.clientY - this.pixelStartY : this.ty + event.clientY - this.pixelStartY;
        return false;
    }
}

Pan.prototype.select=function(e){
    document.getElementById("divMap").style.cursor = "url("+ this.wsnav.baseHREF +"/wsnav/images/pan/grab.cur), -moz-grab";
}

Pan.prototype.unselect=function(e){
    document.getElementById("divMap").style.cursor = "default";
}