function $write(mess) {
	//if($debug) $debug.write(mess);
    //console.log(mess);
}

var gMap,_Photo;
var info;
var refMooCarte;
var gEdit ;
var MAPEXTENT = 0;           // extention de la carte, necessaire pour le fullextent
var MAPSCALE  = 0;

var gPicker;
var gWindowz;
FULLEXTENT = '665000 1325000 690000 1285000';
initExtent = FULLEXTENT;


var oZoomSlider;

var ROLLER_ACTIVATE;     // etat du roulette du souris

goTimer = window.setTimeout("",1000);
var counterDIV=0;
function handleDIV(e){
    counterDIV +=	Event.wheel(e);
    sizefactor = 1+(counterDIV/10);
    gMap.wheelZoom(Math.abs(sizefactor));
}

function initMap(){
		//initlayout();
		
    gMap = new gsMap('visualisation') ;
    _Photo = new photoCanvas("visualisation",{listTools: ["line","rectangle","polygone","circle","text","image","gum","editor"]},gMap);
    new gsMapListener(gMap) ;
    new toolYet(gMap) ;
    new gsMoveDirection(gMap, {classContainer: 'arrowpan'});
    new gsMapHistory(gMap) ;
  	refMooCarte = new gsMapReference(gMap,'gsMapRef');
  /*refMooCarte.minx = 652048 ;
  	refMooCarte.miny = 1289630 ;  
  	refMooCarte.maxx = 695121 ; 
  	refMooCarte.maxy = 1316671 ;*/
    var lyr = gMap.addLayer() ;
    new gsMapLoading(gMap) ;
    gMap.newExtent.set(initExtent) ;
    gMap.zoomIn();
  	gWindowz = new gsWindowz(gMap);
	  gPicker = new gsPicker();
	  
	  var map = gMap;
	  oZoomSlider = new Slider('zoomtrack','zbutton',{
			onChange : function() {
				if(this.step != 50)map.wheelZoom(this.step);
			}
	  });
		oZoomSlider.set(50);
	   //_Photo = new photoCanvas("visualisation",{listTools: "all"});

	  fixPNG2_("backRefMap") ;

    return lyr ;
}
function initEditor(lyr,layerInit){
	gEdit = new gsMapEditor(lyr) ;
	disableElt = new Array(2,3,4,5,6,7,8,9,10,11,12) ;
	gMap.disableAllElt(disableElt) ;	
}



var gsMapListener = new Class ({
    initialize: function(pMap) {
        this.map = pMap ;
        //this.map.addEvent('onExtentChange', this.extentChange.bind(this));
        //this.map.addEvent('onRequestSend', this.requestSend.bind(this));
        this.map.addEvent('onRequestResult', this.requestResult.bind(this)) ;
        //this.map.addEvent('onRendered', this.rendered.bind(this));

        this.map.addEvent('onToolEnd', this.toolEnd.bind(this)) ;
    },
    /*
    extentChange: function(extent) {
        //$write("gsMapListener::extentChange");
    },
    requestSend: function(obj) {
        //$write("gsMapListener::requestSend");
    },
    rendered: function(id){
        $write("gsMapListener::rendered");
    },
    */
    requestResult: function(rs) {
        $write("gsMapListener::requestResult");
        
	    	if(rs.extent){
            //Initialise avec l'extent max lors du 1er appel
            if(MAPEXTENT==0) MAPEXTENT = rs.extent ;
        }
        //Actualise l'échelle dans le InputBox
        if(rs.scaleInitiale){
        	if(rs.scaleInitiale != ""){
        		this.map.fullExtent = new Extent(rs.vueInitiale);
        		this.map.scaleInitiale = rs.scaleInitiale ;
        	}
        }
       	if(rs.selection && rs.selection != "") {
       		afficheSelection() ;
       	}
        if(rs.dataDessin){
        	reafficheData(rs.dataDessin)
        }
       	if(rs.toeval && rs.toeval != ""){
       		try {
       			eval(rs.toeval) ;
       		}catch(e) {
       			//
       		}
       	}
       	if(rs.visibleStatus && rs.visibleStatus != ""){        		
     			checkVisibilityLayer(rs.visibleStatus);
       	}
        /*
       	// roullette
        if($('imgTemporaire')) {
            $('imgA').setStyle('display','block');
            $('imgB').setStyle('display','block');
            $('imgTemporaire').parentNode.removeChild($('imgTemporaire'));
        }
        */
    },
    toolEnd: function(tool){
        switch(tool.mode){
            case GSMAP_SELECTIONPOINT:
								if(etiquette){									
									openetiquettepop(tool.point.x,tool.point.y);								
								}
                break;
            case GSMAP_SELECTIONCIRCLE:
                //$write("gsMapListener::toolEnd:Circle >> center="+tool.circle.scrCenter.toString()+" radius="+tool.circle.scrRadius);
                var pt = this.map.t.screenToMap(tool.circle.scrCenter, "Point").toString('_') ;
                var r  = this.map.t.screenToMap(tool.circle.scrRadius, "Number") ;
                var query = "ctrlDown="+tool.keyControl+"&ptCenter="+pt+'&ptRadius='+r;
                this.map.draw(query) ;
                break;
            case GSMAP_SELECTIONRECT:
                //$write("gsMapListener::toolEnd:Rectangle >> TL="+tool.rectangle.screenTL.toString()+" BR="+tool.rectangle.screenBR.toString());
                var orect = tool.rectangle;                
                var oExt = new Extent(orect.screenTL.x, orect.screenTL.y, orect.screenBR.x, orect.screenBR.y);
                var query = "act=selectrect&rectExt="+oExt ;
                this.map.draw(query) ;
                break;
            case GSMAP_SELECTIONPOLY:
                //$write("gsMapListener::toolEnd:Polygon >> geom="+tool.polygon.screenGeom.toString());
                var geom = this.map.t.screenToMap(tool.polygon.screenGeom,"Points")
                var query = "typePoly=true&ctrlDown="+tool.keyControl+"&ptPoly="+geom.toWKT(true) ;
                this.map.draw(query) ;
                break ;
        }
    }
});
            
            