var GSMAP_ERROR=1;var GSMAP_WARNING=2;var GSMAP_NOTICE=3;var gsMap=new Class({version:'1.1',date:'16/03/2007',getOptions:function(){return{fullExtent:'0 0 0 0',imagePath:'images'}},initialize:function(mapName,options){$write("gsMap::initialize");this._size='100%';this._mapIT=0;this.name=mapName;this.setOptions(this.getOptions(),options);this.pixel_img=new Element('img',{'src':this.options.imagePath+'/pixel.gif'});this.zRenderer=0;this._divMap=$(mapName);this.updateSize();$write("gsMap::initialize: top = "+this.top+" - left = "+this.left);$write("gsMap::initialize: width = "+this.width+" - height = "+this.height);this.initDiv();this.layers=new Array();this.tool=new gsMapTools.pan(this);this.center=new Point();this.scale=0;this.extent=new Extent();this.newExtent=new Extent();this.fullExtent=new Extent(this.options.fullExtent);this.srcExtent=new Extent(this.left,this.top,this.left+this.width,this.top+this.height);this.t=new Transform(this.srcExtent,this.extent);this.evt=new gsMapEvent(this)},destroy:function(){this.t=null;this.evt=null},addLayer:function(options){return this.layers[this.layers.length]=new gsMapLayer(this,options)},draw:function(query){$write("gsMap::draw");for(var lr=0;lr<this.layers.length;lr++){this.layers[lr].draw(query)}},setExtent:function(ext){if(this.extent.set(ext)){$write("gsMap::setExtent = "+this.extent.toString());this.newExtent.set(ext);this.t.setMapExtent(this.extent);this.tool.clear();this.fireEvent('onExtentChange',this.extent)}},setFullExtent:function(){this.tool.setMode(GSMAP_FULLEXTENT);this.newExtent.set(this.fullExtent);this.draw()},reSize:function(){$clear(this.tmr);this.tmr=this.setSize.delay(500,this)},updateSize:function(){var btop=0;if((this._divMap.currentStyle)&&(!isNaN(parseInt(this._divMap.currentStyle.borderTopWidth)))){var btop=parseInt(this._divMap.currentStyle.borderTopWidth)}var bleft=0;if((this._divMap.currentStyle)&&(!isNaN(parseInt(this._divMap.currentStyle.borderTopHeight)))){var bleft=parseInt(this._divMap.currentStyle.borderTopHeight)}this.top=this._divMap.getTop()+btop;this.left=this._divMap.getLeft()+bleft;this.width=this._divMap.clientWidth;this.height=this._divMap.clientHeight},setSize:function(){this.tool.setMode(GSMAP_RESIZE);this.updateSize();this.srcExtent.set(null,this.width,this.height);this.draw()},initDiv:function(){this._map=new Element('div');this._map.id='gsMapContainer';this._map.style.position='absolute';this._map.style.left='0px';this._map.style.top='0px';this._map.style.width='100%';this._map.style.height='100%';this._map.style.zIndex='100';this._divMap.appendChild(this._map);this._divZoomBox=new Element('div');this._divZoomBox.oncontextmenu=function(){return false};this._divZoomBox.className='zoombox';this._divMap.appendChild(this._divZoomBox)}});gsMap.implement(new Events);gsMap.implement(new Options);var COORD_PRECISION='FLOAT';var MEASURE_UNIT='m,Km';function parseCoord(val){if(COORD_PRECISION=='INT')return parseInt(val);if(COORD_PRECISION=='FLOAT')return parseFloat(val)};Number.extend({parseCoord:function(){return parseCoord(this)},parseUnit:function(){var u="m";var x=parseInt(this);if(x>1000){x=(x/1000).toFixed(2);u="Km"}x=x+' ';var rgx=/(\d+)(\d{3})/;while(rgx.test(x)){x=x.replace(rgx,'$1'+' '+'$2')}return x+u},parseUnit2:function(){var x=parseInt(this);if(x>1000000){x=this.roundD(x/1000000,1);u=" km2"}else{x=this.roundD(x,0);u=" m2"}return x+u},roundD:function(numin,rf){return(Math.round(numin*Math.pow(10,rf))/Math.pow(10,rf))}});function getObjectClass(obj){if(obj&&obj.constructor&&obj.constructor.toString){var arr=obj.constructor.toString().match(/function\s*(\w+)/);return arr&&arr.length==2?arr[1]:undefined}else{return undefined}};var gsMapEvent=new Class({initialize:function(pMap){this.map=pMap;var that=this;this.wheelCount=0;this.ptDown=new Point();this.ptMove=new Point();this.ptUp=new Point();this.map._divMap.onmousedown=this.start.bindWithEvent(this);this.map._divMap.onmousemove=function(){clrTmr=false;if(showPan){timerInfoPanneau=window.setTimeout("hidePanneauOnmouseOut();",1500)}else{window.clearTimeout(timerInfoPanneau)}};this.map._divMap.addEvent("mousewheel",that.wheel.bindAsEventListener(that))},start:function(e){this.ptDown.set(e.client.x-this.map.left,e.client.y-this.map.top);this.detachOnMouseUp=true;this.map.tool.onMouseDown(this.ptDown);document.onmousemove=this.drag.bindWithEvent(this);document.onmouseup=this.end.bindWithEvent(this);document.ondblclick=this.dblend.bindWithEvent(this);return false},drag:function(e){this.ptMove.set(e.client.x-this.map.left,e.client.y-this.map.top);this.map.tool.onMouseMove(this.ptMove,this.ptDown);return false},end:function(e){this.map.tool.keyControl=e.control;this.ptUp.set(e.client.x-this.map.left,e.client.y-this.map.top);this.map.tool.onMouseUp(this.ptUp,this.ptDown);if(this.detachOnMouseUp)this.clear();return false},dblend:function(e){this.map.tool.onDblClick(this.ptUp,this.ptDown);this.clear();return false},clear:function(){document.onmousemove=null;document.onmouseup=null;document.ondblclick=null;this.ptDown.set();this.ptMove.set();this.ptUp.set()},wheel:function(evt){this.wheelCount+=Event.wheel(evt);sizefactor=1+(this.wheelCount/10);this.map.wheelZoom(Math.abs(sizefactor));Event.stop(evt)}});var gsMapLayer=new Class({getOptions:function(){return{serviceName:'Ms',serviceOptions:{},rendererName:'Swap',rendererOptions:{}}},initialize:function(pMap,options){$write("gsMapLayer::initialize");this.map=pMap;this.index=this.map.layers.length;this.id=this.map.name+this.index;this.nRnd=0;this.setOptions(this.getOptions(),options);this.query="";this.pquery="";this.renderer=new gsMapRenderer(this.options.rendererName,this,this.options.rendererOptions);this.service=new gsMapService(this.options.serviceName,this,this.options.serviceOptions)},setOpacity:function(opacity,clientLayer){if(this.renderer.setOpacity)this.renderer.setOpacity(opacity,clientLayer)},addQuery:function(pQuery){this.query+="&"+pQuery},addPermanentQuery:function(pQuery){this.pquery+="&"+pQuery},draw:function(query){$write("gsMapLayer::draw");var baseQuery=this.service.buildRequest();this.renderer.beforeRequest();this.sendRequest(baseQuery+this.query+this.pquery+"&"+query);this.query=''},sendRequest:function(url){if(url=="")return;var furl=url+"&mapIT="+this.map._mapIT++;$write("gsMapLayer::sendRequest = "+furl);this.map.fireEvent('onRequestSend',{it:this.map._mapIT,url:url});new Ajax(furl,{method:'get',postBody:'',onComplete:this.render.bind(this)}).request()},render:function(request){$write("gsMapLayer::render = "+request);try{eval('var rs = '+request)}catch(e){this.map.fireEvent('onRequestResultError',"R\351ponse non valide : "+request);return}if(rs.recharge){alert('Votre session a expir\351, la page doit se recharger!');_url=baseName(window.location.href.replace(/#/,''));window.location.href=_url}if(rs.err){alert(rs.err.urldecode());this.map.fireEvent('onRequestResultError',rs.err);return}if(rs.manageInfo){if(rs.manageInfo=="show"){}}if(rs.toEval){try{eval(rs.toEval)}catch(e){}}if(rs.extent)this.map.setExtent(rs.extent);if(rs.scale){this.map.scale=rs.scale}if(rs.response)this.renderer.render(rs.response);this.map.fireEvent('onRequestResult',rs)}});gsMapLayer.implement(new Options);var GSMAP_PAN=100;var GSMAP_ZOOMIN=101;var GSMAP_ZOOMOUT=102;var GSMAP_FULLEXTENT=111;var GSMAP_PAN_POINT={one:false};var gsMapTools=new Class({initialize:function(pMap){$write("gsMapTools::initialize");this.map=pMap;this.imagePath=this.map.options.imagePath},destroy:function(){this.map=null},clear:Class.empty,setMode:function(mod){if(mod!=GSMAP_INFOBULL){try{Infos2.getWindow("infoBulle").close()}catch(e){}}$write("gsMapTools::setMode = "+mod);this.map.fireEvent('onModeChange',{oldMode:this.mode,newMode:mod});this.mode=mod},setCursor:function(stdCur,imgCur){var std=(stdCur)?stdCur:'default';var img=(imgCur)?'url("'+this.imagePath+'/cursor/'+imgCur+'"),':'';this.map._map.style.cursor=img+std},resetCursor:function(cur){this.map._map.style.cursor=cur},onMouseDown:Class.empty,onMouseMove:Class.empty,onMouseUp:function(ptUp,ptDown){this.map.fireEvent('onToolEnd',this)},onDblClick:function(ptUp,ptDown){this.map.fireEvent('onToolEnd',this)}});gsMapTools.pan=gsMapTools.extend({initialize:function(pMap){$write("gsMapTools.pan::initialize");this.parent(pMap);this.setMode(GSMAP_PAN);this.setCursor("move","grab.cur")},onMouseDown:function(ptDown){$write("gsMapTools.pan::onMouseDown = "+ptDown);this.originx=parseInt(this.map._map.style.left);this.originy=parseInt(this.map._map.style.top);this.setCursor("move","grabbing.cur");operationEncours=true},onMouseMove:function(ptMove,ptDown){this.map._map.style.top=(this.originy+(ptMove.y-ptDown.y))+"px";this.map._map.style.left=(this.originx+(ptMove.x-ptDown.x))+"px"},onMouseUp:function(ptUp,ptDown){if(ptUp.equals(ptDown)){Object.extend(GSMAP_PAN_POINT,{one:true,pt:{x:ptUp.x,y:ptUp.y}});var pt=this.map.t.screenToMap(ptUp,"Point");this.map.newExtent.moveTo(pt)}else{var dx=this.map.t.screenToMap(ptDown.x-ptUp.x,"Number");var dy=this.map.t.screenToMap(ptUp.y-ptDown.y,"Number");this.map.newExtent.moveBy(dx,dy);try{var infoB=Infos.getWindow(DIVINFO);var dL=parseInt(ptUp.x-ptDown.x);var dT=parseInt(ptUp.y-ptDown.y);infoB.setUpOptions({deltaY:dT,deltaX:dL});infoB.elPoint.setStyles({top:parseInt(infoB.elPoint.getStyle('top'))+dT,left:parseInt(infoB.elPoint.getStyle('left'))+dL});infoB.elPointOmbre.setStyles({top:parseInt(infoB.elPointOmbre.getStyle('top'))+dT,left:parseInt(infoB.elPointOmbre.getStyle('left'))+dL});infoB._reposInfo()}catch(e){}}this.map.draw();this.setCursor("move","grab.cur");operationEncours=false}});gsMapTools.zoomIn=gsMapTools.extend({initialize:function(pMap){$write("gsMapTools.zoomIn::initialize");this.parent(pMap);this.setMode(GSMAP_ZOOMIN);this.setCursor("crosshair","zoomin.cur")},onMouseDown:function(ptDown){$write("gsMapTools.zoomIn::onMouseDown = "+ptDown);this.zoomBox(ptDown,ptDown);this.map._divZoomBox.style.display='block';operationEncours=true},onMouseMove:function(ptMove,ptDown){this.zoomBox(ptMove,ptDown)},onMouseUp:function(ptUp,ptDown){$write("gsMapTools.zoomIn::onMouseUp = "+ptUp+" - "+ptDown);this.map._divZoomBox.hide();var srcExt=new Extent(ptDown.x,ptDown.y,ptUp.x,ptUp.y);srcExt.order();if((srcExt.width<=5)&&(srcExt.height<=5)){var pt=this.map.t.screenToMap(ptUp,"Point");this.map.newExtent.moveTo(pt);this.map.newExtent.scale(0.5)}else{var mapExt=this.map.t.screenToMap(srcExt,"Extent");this.map.newExtent.set(mapExt.toString())}try{var i=Infos.getWindow(DIVINFO);var a=(i.storedLocation)?2:1;var iW=(i.storedLocation)?i.options.maxWidth:i.width;var iH=(i.storedLocation)?i.options.maxHeight:i.height;iW=this.map.t.screenToMap(iW,"Number");iH=this.map.t.screenToMap(iH,"Number");var pt=new Point(i.options.leftG,i.options.topG);var query="manageInfo="+a+"&ptInfo="+pt.x+","+pt.y+"&infoSize="+iW+","+iH;for(var lr=0;lr<this.map.layers.length;lr++){this.map.layers[lr].addQuery(query)}real=false}catch(e){};this.map.draw();operationEncours=false},zoomBox:function(ptMove,ptDown){var zS=this.map._divZoomBox.style;zS.left=Math.min(ptMove.x,ptDown.x)+"px";zS.top=Math.min(ptMove.y,ptDown.y)+"px";zS.width=Math.abs(ptMove.x-ptDown.x)+"px";zS.height=Math.abs(ptMove.y-ptDown.y)+"px"}});gsMapTools.zoomOut=gsMapTools.extend({initialize:function(pMap){$write("gsMapTools.zoomOut::initialize");this.parent(pMap);this.setMode(GSMAP_ZOOMOUT);this.setCursor("crosshair","zoomout.cur")},onMouseUp:function(ptUp,ptDown){try{var i=Infos.getWindow(DIVINFO);var a=(i.storedLocation)?2:1;var iW=(i.storedLocation)?i.options.maxWidth:i.width;var iH=(i.storedLocation)?i.options.maxHeight:i.height;iW=this.map.t.screenToMap(iW,"Number");iH=this.map.t.screenToMap(iH,"Number");var pt=new Point(i.options.leftG,i.options.topG);var query="manageInfo="+a+"&ptInfo="+pt.x+","+pt.y+"&infoSize="+iW+","+iH;for(var lr=0;lr<this.map.layers.length;lr++){this.map.layers[lr].addQuery(query)}real=false}catch(e){};$write("gsMapTools.zoomOut::onMouseUp = "+ptUp+" - "+ptDown);var pt=this.map.t.screenToMap(ptUp,"Point");this.map.newExtent.moveTo(pt);this.map.newExtent.scale(1.5);this.map.draw()}});gsMap.implement({pan:function(){this.tool.destroy();this.tool=new gsMapTools.pan(this)},zoomIn:function(){this.tool.destroy();this.tool=new gsMapTools.zoomIn(this)},zoomOut:function(){this.tool.destroy();this.tool=new gsMapTools.zoomOut(this)}});Array.extend({insert:function(i,v){if(i>=0){var a=this.slice(),b=a.splice(i);a[i]=v;return a.concat(b)}}});String.extend({urldecode:function(){return unescape(this.replace(/[+]/g," "))},after:function(car){var p=this.indexOf(car);if(p>0)return this.substring(p+1)}});var Extent=new Class({initialize:function(){this.set.apply(this,arguments)},get:function(){return this.TLx+" "+this.TLy+" "+this.BRx+" "+this.BRy},set:function(){var dTLx=dTLy=dBRx=dBRy=0;if(arguments.length==1){if(!arguments[0])return false;if(arguments[0].split){var aExt=arguments[0].split(" ");dTLx=aExt[0];dTLy=aExt[1];dBRx=aExt[2];dBRy=aExt[3]}if(arguments[0].TLx){dTLx=arguments[0].TLx;dTLy=arguments[0].TLy;dBRx=arguments[0].BRx;dBRy=arguments[0].BRy}}if(arguments.length==3){if((this.width==arguments[1])&&(this.height==arguments[2])&&(this.getCenter().equals(arguments[0])))return false;this.setWidth(arguments[1]);this.setHeight(arguments[2]);this.moveTo(arguments[0]);return true}if(arguments.length==4){dTLx=arguments[0];dTLy=arguments[1];dBRx=arguments[2];dBRy=arguments[3]}if((this.TLx==parseCoord(dTLx))&&(this.TLy==parseCoord(dTLy))&&(this.BRx==parseCoord(dBRx))&&(this.BRy==parseCoord(dBRy)))return false;this.TLx=parseCoord(dTLx);this.TLy=parseCoord(dTLy);this.BRx=parseCoord(dBRx);this.BRy=parseCoord(dBRy);this.setWidth();this.setHeight();return true},getCenter:function(){return new Point(this.TLx+(this.width/2),this.BRy+(this.height/2))},order:function(){var minx=Math.min(this.TLx,this.BRx);var miny=Math.min(this.TLy,this.BRy);var maxx=Math.max(this.TLx,this.BRx);var maxy=Math.max(this.TLy,this.BRy);this.TLx=minx;this.TLy=miny;this.BRx=maxx;this.BRy=maxy;this.setWidth();this.setHeight()},setWidth:function(w,bCenter){if(w){if(bCenter){var dx=(w-this.width)/2;this.TLx-=dx;this.BRx+=dx}else{this.BRx=this.TLx+parseCoord(w)}}this.width=(this.BRx-this.TLx)},setHeight:function(h,bCenter){if(h){if(bCenter){var dy=(h-this.height)/2;this.TLy+=dy;this.BRy-=dy}else{this.BRy=this.TLy+parseCoord(h)}}this.height=(this.TLy-this.BRy)},scale:function(dScale){if(!dScale)return;var lDeltaX=parseCoord(((this.width*dScale)-this.width)/2);var lDeltaY=parseCoord(((this.height*dScale)-this.height)/2);this.TLy+=lDeltaY;this.BRy-=lDeltaY;this.TLx-=lDeltaX;this.BRx+=lDeltaX;this.setWidth();this.setHeight()},toScale:function(dScale,scrExt){if(!scrExt)return;var resolution=72;var inches=39.3701;var pixelsPerDisplayUnit=resolution*inches*dScale;var nw=scrExt.width/pixelsPerDisplayUnit;var nh=-(scrExt.height/pixelsPerDisplayUnit);this.setWidth(nw,true);this.setHeight(nh,true)},moveTo:function(pt){if(!pt)return;var lDw=parseCoord(this.width/2);var lDh=parseCoord(this.height/2);this.TLy=pt.y+lDh;this.BRy=pt.y-lDh;this.TLx=pt.x-lDw;this.BRx=pt.x+lDw},moveBy:function(dx,dy){if((dx==0)&&(dy==0))return;dx=parseCoord(dx);dy=parseCoord(dy);this.TLx+=dx;this.TLy+=dy;this.BRx+=dx;this.BRy+=dy}});Extent.prototype.getExtent=Extent.prototype.get;Extent.prototype.toString=Extent.prototype.get;Extent.prototype.setExtent=Extent.prototype.set;var sPoint=new Class({initialize:function(x,y){this.set(x,y)},set:function(x,y){var nx=(x)?x.parseCoord():0;var ny=(y)?y.parseCoord():0;this.x=nx;this.y=ny}});var Point=new Class({initialize:function(x,y){this.set(x,y)},set:function(x,y){var nx=(x)?parseCoord(x):0;var ny=(y)?parseCoord(y):0;this.x=nx;this.y=ny},setPt:function(pt){this.set(pt.x,pt.y)},moveBy:function(dx,dy){this.set(this.x+dx,this.y+dy)},copy:function(){var np=new Point(this.x,this.y);return np},toString:function(sep){if((this.x==null)&&(this.y==null))return"null";if(!sep)sep=',';return this.x+sep+this.y},toInt:function(){this.x=parseInt(this.x);this.y=parseInt(this.y);return this},equals:function(Pt){if((this.x==Pt.x)&&(this.y==Pt.y))return true;return false},isNull:function(){if((this.x==0)&&(this.y==0))return true;return false},distance:function(Pt){var dDist=0.0;if(this.equals(Pt))return dDist;dDist=Math.pow(((this.x-Pt.x)*(this.x-Pt.x)+(this.y-Pt.y)*(this.y-Pt.y)),0.5);return dDist},middle:function(Pt){if(this.equals(Pt))return Pt;return new Point((this.x+Pt.x)/2,(this.y+Pt.y)/2)}});var Points=new Class({initialize:function(){this.geom=new Array();this.length=0},toString:function(sep){var str="";for(var p=0;p<this.length;p++){pt=this.geom[p];if(pt==null)continue;str+=";"+pt.toString(sep)}if(str!="")str=str.substring(1);return str},toWKT:function(bClose){var str="";for(var p=0;p<this.length;p++){str+=","+this.geom[p].x+" "+this.geom[p].y}if(str!=""){str=str.substring(1);if(bClose)str+=","+this.geom[0].x+" "+this.geom[0].y}return str},toInt:function(){for(var p=0;p<this.length;p++){this.geom[p].toInt()}return this},add:function(pt){if(pt.set){this.geom.push(pt)}else{var npt=new Point(pt.x,pt.y);this.geom.push(npt)}this.length++},adds:function(Pts){for(var p=0;p<Pts.length;p++){this.add(Pts[p])}},del:function(idx){if((idx<0)||(idx>this.length))return null;this.geom.splice(idx,1);this.length--},clear:function(){this.geom=[];this.length=0},set:function(idx,pt){if((idx<0)||(idx>this.length))return null;this.geom[idx].set(pt.x,pt.y)},moveBy:function(dx,dy){for(var p=0;p<this.length;p++){this.geom[p].moveBy(dx,dy)}},item:function(idx){if((idx<0)||(idx>this.length))return null;return this.geom[idx]}});var Transform=new Class({initialize:function(scrExtent,mapExtent){this.scrExtent=scrExtent;this.mapExtent=mapExtent;this.setFactor()},setScreenExtent:function(ext){this.scrExtent=ext;this.setFactor()},setMapExtent:function(ext){this.mapExtent=ext;this.setFactor()},setFactor:function(){this.mfw=this.mapExtent.width/this.scrExtent.width;this.mfh=this.mapExtent.height/this.scrExtent.height;this.sfw=1/this.mfw;this.sfh=1/this.mfh},screenToMap:function(obj,objClass){if((this.mapExtent==null)||(this.scrExtent==null)){return obj}if(objClass==null)objClass=getObjectClass(obj);switch(objClass){case"Number":return(obj*this.mfw);case"Point":var mapx=this.mapExtent.TLx+(obj.x*this.mfw);var mapy=this.mapExtent.TLy+(obj.y*this.mfh);return new Point(mapx,mapy);case"Points":var Pts=new Points();for(var p=0;p<obj.length;p++){pt=obj.item(p);if(pt==null)continue;var mapx=this.mapExtent.TLx+(pt.x*this.mfw);var mapy=this.mapExtent.TLy+(pt.y*this.mfh);Pts.add(new Point(mapx,mapy))}return Pts;case"Extent":var scrTLx=this.mapExtent.TLx+(obj.TLx*this.mfw);var scrTLy=this.mapExtent.TLy+(obj.TLy*this.mfh);var scrBRx=this.mapExtent.TLx+(obj.BRx*this.mfw);var scrBRy=this.mapExtent.TLy+(obj.BRy*this.mfh);return new Extent(scrTLx,scrTLy,scrBRx,scrBRy)}return null},mapToScreen:function(obj,objClass){if((this.mapExtent==null)||(this.scrExtent==null)){return obj}if(objClass==null)objClass=getObjectClass(obj);switch(objClass){case"Number":return(obj*this.sfw);case"Point":var scrx=(obj.x-this.mapExtent.TLx)*this.sfw;var scry=(obj.y-this.mapExtent.TLy)*this.sfh;return new Point(scrx,scry);case"Points":var Pts=new Points();for(var p=0;p<obj.length;p++){var pt=obj.item(p);if(pt==null)continue;var scrx=(pt.x-this.mapExtent.TLx)*this.sfw;var scry=(pt.y-this.mapExtent.TLy)*this.sfh;Pts.add(new Point(scrx,scry))}return Pts;case"Extent":var scrTLx=this.scrExtent.TLx+((obj.TLx-this.mapExtent.TLx)*this.sfw);var scrTLy=this.scrExtent.TLy+((obj.TLy-this.mapExtent.TLy)*this.sfh);var scrBRx=this.scrExtent.BRx+((obj.BRx-this.mapExtent.BRx)*this.sfw);var scrBRy=this.scrExtent.BRy+((obj.BRy-this.mapExtent.BRy)*this.sfh);return new Extent(scrTLx,scrTLy,scrBRx,scrBRy)}return null}});var gsMapRenderer=new Class({initialize:function(rendererName,pLayer,options){try{eval("var r = new gsMapRenderer."+rendererName+"(pLayer, options)")}catch(e){var r=new gsMapRenderer.Swap(pLayer,options)}return r}});gsMapRenderer.Simple=new Class({name:"simple",initialize:function(pLayer){$write("gsMapRenderer.Simple::initialize");this.map=pLayer.map;this.init()},beforeRequest:function(){$write("gsMapRenderer.Simple::beforeRequest");this.map._map.style.top="0px";this.map._map.style.left="0px";this._img.hide()},setOpacity:function(val){this._img.setOpacity(val)},render:function(imgUrl){$write("gsMapRenderer.Simple::render");if(!imgUrl)return;this._img.src=imgUrl},imgLoaded:function(){this.show();this.map.fireEvent('onRendered',this._img.id)},display:function(){this.imgLoaded()},imgError:function(){$write("gsMapRenderer.Simple::imgError");this._img.src=this.map.pixel_img.src},show:function(){this._img.show()},hide:function(){this._img.hide()},init:function(){$write("gsMapRenderer.Simple::init");this._img=new Element('img');this._img.id="imgSimple"+this.map.layers.length;this._img.style.position='absolute';this._img.style.left='0px';this._img.style.top='0px';this._img.style.width='100%';this._img.style.height='100%';this._img.style.display='block';this._img.onload=this.imgLoaded.bind(this);this._img.onerror=this.imgError.bind(this);this._img.src=this.map.pixel_img.src;this.map._map.appendChild(this._img)}});gsMapRenderer.Swap=new Class({name:"swap",getOptions:function(){return{opacity:1,async:true}},initialize:function(pLayer,options){$write("gsMapRenderer.Swap::initialize");this.map=pLayer.map;this.layer=pLayer;this.setOptions(this.getOptions(),options);this.id='gsMapLayer_'+this.layer.id+this.layer.nRnd++;this.init()},beforeRequest:function(){$write("gsMapRenderer.Swap::beforeRequest");var e=this.map.evt;var m=this.map.tool.mode;var dx=dy=0;switch(m){case GSMAP_PAN:dx=e.ptUp.x-e.ptDown.x;dy=e.ptUp.y-e.ptDown.y;break;case GSMAP_ZOOMIN:break;case GSMAP_ZOOMOUT:break;case GSMAP_PANKEYBOARD:dx=ptFx[1];dy=ptFx[0];break}this._imgA.style.left=dx+"px";this._imgA.style.top=dy+"px";this.map._map.style.top="0px";this.map._map.style.left="0px";this.map._map.style.top="0px";this.map._map.style.left="0px"},render:function(imgUrl){$write("gsMapRenderer.Swap::render");if(imgUrl=='')return;if($type(imgUrl)=='array')imgUrl=imgUrl[0];this._imgB.style.left='0px';this._imgB.style.top='0px';this._imgB.style.width='100%';this._imgB.style.height='100%';var tmp=this._imgA.style.zIndex;this._imgA.style.zIndex=this._imgB.style.zIndex;this._imgB.style.zIndex=tmp;this._imgB.src=imgUrl;if(this.options.async){this._imgB.onload=this.imgLoaded.bind(this)}else{this._imgB.onload=this.layer.renderer.globalRender.bind(this.layer.renderer)}},imgLoaded:function(){var that=this;var myEffects=this._imgB.effects({duration:300,transition:Fx.Transitions.sineInOut,onComplete:function(){this.display();if(this.map.tool.mode==GSMAP_PANROLLER){this.map.toolYet.imgComplete()}}.bind(this)});myEffects.start({'opacity':[0,this.options.opacity]})},display:function(){this.show();var tmp=this._imgA;this._imgA=this._imgB;this._imgB=tmp;this._imgB.hide();this._imgA.show();this.map.fireEvent('onRendered',this.id)},imgAError:function(){$write("gsMapRenderer.Swap::imgError");this._imgA.src=this.map.pixel_img.src},imgBError:function(){$write("gsMapRenderer.Swap::imgError");this._imgB.src=this.map.pixel_img.src},setOpacity:function(val){this._imgA.setOpacity(val);this._imgB.setOpacity(val)},show:function(){this.layerContainer.show()},hide:function(){this.layerContainer.hide()},init:function(){this.layerContainer=new Element('div');this.layerContainer.id=this.id;this._imgA=new Element('img');this._imgA.oncontextmenu=function(){return false};this._imgA.id="imgA";this._imgA.style.position='absolute';this._imgA.style.top='0';this._imgA.style.left='0';this._imgA.style.width='100%';this._imgA.style.height='100%';this._imgA.onerror=this.imgAError.bind(this);this._imgA.style.zIndex=this.map.zRenderer++;this._imgB=new Element('img');this._imgB.oncontextmenu=this._imgA.oncontextmenu;this._imgB.id="imgB";this._imgB.style.position=this._imgA.style.position;this._imgB.style.top=this._imgA.style.top;this._imgB.style.left=this._imgA.style.left;this._imgB.style.width=this._imgA.style.width;this._imgB.style.height=this._imgA.style.height;this._imgB.onerror=this.imgBError.bind(this);this._imgB.style.zIndex=this.map.zRenderer++;this.layerContainer.appendChild(this._imgA);this.layerContainer.appendChild(this._imgB);this.map._map.appendChild(this.layerContainer)}});gsMapRenderer.Swap.implement(new Options);gsMapRenderer.Collection=new Class({name:"collection",getOptions:function(){return{rendererName:'Swap',rendererOptions:{"all":{}}}},initialize:function(pLayer,options){$write("gsMapRenderer.Collection::initialize");this.setOptions(this.getOptions(),options);this.map=pLayer.map;this.layer=pLayer;this.aRenderer=new Array()},beforeRequest:function(){$write("gsMapRenderer.Collection::beforeRequest");for(var r=0;r<this.aRenderer.length;r++){this.aRenderer[r].beforeRequest()}},setOpacity:function(val,cl){if(cl||cl===0){if((cl>=0)&&(cl<this.aRenderer.length))this.aRenderer[cl].setOpacity(val);return}for(var r=0;r<this.aRenderer.length;r++){this.aRenderer[r].setOpacity(val)}},render:function(aImgUrl){$write("gsMapRenderer.Collection::render");this.aRendered=[];this.nbLoaded=0;if($type(aImgUrl)=='string'){var imgUrl=aImgUrl;aImgUrl=new Array();aImgUrl.push({id:0,url:imgUrl})}for(var r=0;r<this.aRenderer.length;r++){if(!aImgUrl[r])this.aRenderer[r].hide()}for(var i=0;i<aImgUrl.length;i++){var id=aImgUrl[i].id;var url=aImgUrl[i].url;if(!this.aRenderer[id]){var opt=this.options.rendererOptions['all'];if(this.options.rendererOptions[id])Object.extend(opt,this.options.rendererOptions[id]);var renderer=new gsMapRenderer(this.options.rendererName,this.layer,opt);this.aRenderer[id]=renderer}if(url!=""){this.aRenderer[id].render(url);this.aRendered.push(id)}else{this.aRenderer[id].hide()}}},globalRender:function(){this.nbLoaded++;if(this.nbLoaded==this.aRendered.length){for(var r=0;r<this.aRendered.length;r++){this.aRenderer[this.aRendered[r]].display()}this.map.fireEvent('onGobalRendered',this.layer.index)}}});gsMapRenderer.Collection.implement(new Options);var gsMapService=new Class({initialize:function(serviceName,pLayer,options){try{eval("var s = new gsMapService."+serviceName+"(pLayer, options)")}catch(e){var s=new gsMapService.Ms(pLayer,options)}return s}});gsMapService.Ms=new Class({getOptions:function(){return{serverScript:'x_load.php',mapFile:'main.map'}},initialize:function(pLayer,options){$write("gsMapService.Ms::initialize");this.name="MapServer";this.map=pLayer.map;this.setOptions(this.getOptions(),options)},buildRequest:function(){var query=this.options.serverScript+"?extent="+this.map.newExtent.toString();query+="&w="+this.map.width+"&h="+this.map.height;return query}});gsMapService.Ms.implement(new Options);var gsMapTooltip=new Class({setOptions:function(options){this.o={offsetX:5,offsetY:5,align:'tl',fixed:false,text:''};Object.extend(this.o,options||{})},initialize:function(pMap,options){this.map=pMap;this.setOptions(options);this.text=this.o.text;this.build();this.topT=0;this.leftT=0},build:function(){this.tooltip=new Element('div');this.map._map.appendChild(this.tooltip);this.tooltip.className='tooltip';this.tooltip.setOpacity(0.75);this.hide()},destroy:function(){this.tooltip.remove();this.tooltip=null},update:function(Pt,text){if(arguments.length==4){this.topT=arguments[2];this.leftT=arguments[3]}this.setPosition(arguments[0]);this.setText(arguments[1])},setPosition:function(Pt){if(this.text==""){this.hide();return}this.show();var nPt=new Point(Pt.x,Pt.y);nPt=this.alignPosition(nPt,this.setAlign(nPt));topT=nPt.y+this.topT;leftT=nPt.x+this.leftT;this.tooltip.style.top=topT+"px";this.tooltip.style.left=leftT+"px";delete nPt},moveBy:function(dx,dy){var ox=parseCoord(this.tooltip.style.left);var oy=parseCoord(this.tooltip.style.top);this.tooltip.style.top=(oy+dy)+"px";this.tooltip.style.left=(ox+dx)+"px"},setText:function(text){this.text=text.replace(/\s/g,"&nbsp;");this.tooltip.innerHTML=this.text},setAlign:function(Pt){if((this.o.align!='tl')||(this.o.fixed))return this.o.align;var al='t';if(Pt.y<(this.map.height*0.25))al='t';if(Pt.y>(this.map.height*0.75))al='b';if(Pt.x<(this.map.width*0.25))al+='l';if(Pt.x>(this.map.width*0.75))al+='r';if(al.length==1)al+='l';return al},alignPosition:function(Pt,al){switch(al){case'tl':if(this.o.fixed)Pt.set(0,0);Pt.x+=this.o.offsetX;Pt.y+=this.o.offsetY;break;case'tr':if(this.o.fixed)Pt.set(this.map.width,0);Pt.x-=this.tooltip.clientWidth+this.o.offsetX;Pt.y+=this.o.offsetY;break;case'bl':if(this.o.fixed)Pt.set(0,this.map.height);Pt.x+=this.o.offsetX;Pt.y-=this.tooltip.clientHeight+this.o.offsetY;break;case'br':if(this.o.fixed)Pt.set(this.map.width,this.map.height);Pt.x-=this.tooltip.clientWidth+this.o.offsetX;Pt.y-=this.tooltip.clientHeight+this.o.offsetY;break;case'cc':if(this.o.fixed){Pt.set(this.o.offsetX,this.o.offsetY)}else{Pt.x-=parseInt(this.tooltip.clientWidth/2);Pt.y-=parseInt(this.tooltip.clientHeight/2)}break;case'in':if(this.o.fixed){Pt.set(this.o.offsetX,this.o.offsetY)}else{Pt.x+=this.o.offsetX;Pt.y+=this.o.offsetY;if((Pt.x+this.tooltip.clientWidth+this.o.offsetX)>this.map.width)Pt.x=this.map.width-this.tooltip.clientWidth-this.o.offsetX;if((Pt.y+this.tooltip.clientHeight+this.o.offsetY)>this.map.height)Pt.y=this.map.height-this.tooltip.clientHeight-this.o.offsetY;if(Pt.x<0)Pt.x=this.o.offsetX;if(Pt.y<0)Pt.y=this.o.offsetY}break}return Pt},show:function(){if(this.tooltip.style.display!='block')this.tooltip.style.display='block'},hide:function(){this.tooltip.style.display='none'},clear:function(){this.hide();this.setText("");this.tooltip.style.top="-100px";this.tooltip.style.left="-100px"}});var gsMapTooltips=new Class({initialize:function(pMap){this.map=pMap;this.tooltips=new Array()},add:function(tt){this.tooltips.push(tt)},moveBy:function(dx,dy){for(var t=0;t<this.tooltips.length;t++){this.tooltips[t].moveBy(dx,dy)}},destroy:function(){for(var t=0;t<this.tooltips.length;t++){this.tooltips[t].destroy()}this.tooltips=[]}});var gsMapDraw=new Class({setOptions:function(options){this.o={lineWidth:2,strokeStyle:'red',fillStyle:'#FFA500',id:'gsMapCanvas',clear:true};Object.extend(this.o,options||{})},initialize:function(pMap,options){$write("gsMapDraw::initialize");this.map=pMap;this.setOptions(options);this._cs=this.initCanvas();this.ctx=this._cs.getContext('2d');this.bShow=false},hide:function(){this._cs.style.display='none';this.bShow=false},show:function(){if(this.bShow)return;this._cs.width=this.map.width;this._cs.height=this.map.height;this._cs.style.display='block';this.bShow=true},initCanvas:function(){$write("gsMapDraw::initCanvas");var el=$(this.o.id);if(el)return el;el=document.createElement('canvas');el.id=this.o.id;el.style.zIndex='100';el.style.position="absolute";el.style.display="none";el.style.left='0px';el.style.top='0px';el.width=this.map.width;el.height=this.map.height;this.map._map.appendChild(el);if(typeof G_vmlCanvasManager!="undefined"){$write("gsMapDraw::initCanvas : IE");el=G_vmlCanvasManager.initElement(el)}return el},clear:function(){this.ctx.clearRect(0,0,this._cs.width,this._cs.height);this.hide()},draw:function(){this.show();var ctx=this.ctx;ctx.lineWidth=this.o.lineWidth;ctx.strokeStyle=this.o.strokeStyle;ctx.fillStyle=this.o.fillStyle;if(this.o.clear)ctx.clearRect(0,0,this._cs.width,this._cs.height);this.path();if(this.filled){ctx.globalAlpha=0.4;ctx.fill()}ctx.globalAlpha=1;this.path();ctx.stroke()}});gsMapDraw.Circle=gsMapDraw.extend({initialize:function(pMap,options){$write("gsMapDraw.Circle::initialize");this.parent(pMap,options);this.filled=true},update:function(pC,pR){this.scrCenter=pC;this.scrRadius=this.scrCenter.distance(pR);this.draw()},path:function(){this.ctx.beginPath();this.ctx.arc(this.scrCenter.x,this.scrCenter.y,this.scrRadius,0,Math.PI*2,false);this.ctx.closePath()}});gsMapDraw.Rectangle=gsMapDraw.extend({initialize:function(pMap,options){$write("gsMapDraw.Rectangle::initialize");this.parent(pMap,options);this.filled=true},update:function(pTL,pBR){this.screenTL=pTL;this.screenBR=pBR;this.screenWidth=this.screenBR.x-this.screenTL.x;this.screenHeight=this.screenBR.y-this.screenTL.y;this.draw()},path:function(){this.ctx.beginPath();this.ctx.moveTo(this.screenTL.x,this.screenTL.y);this.ctx.lineTo(this.screenBR.x,this.screenTL.y);this.ctx.lineTo(this.screenBR.x,this.screenBR.y);this.ctx.lineTo(this.screenTL.x,this.screenBR.y);this.ctx.closePath()}});gsMapDraw.Polygone=gsMapDraw.extend({initialize:function(pMap,options){$write("gsMapDraw.Polygone::initialize");this.parent(pMap,options);this.filled=this.closed=true;delete this.screenGeom;this._length=this.length=this.fulllength=this.area=0},end:function(){delete this.screenGeom;this._length=this.length=this.fulllength=this.area=0},addPoint:function(Pt){if(!this.screenGeom){this.screenGeom=new Points()}this.screenGeom.add(Pt);this._length+=this.length;this.length=0},addPoints:function(Pts){for(var p=0;p<Pts.length;p++){this.addPoint(Pts.item(p))}this.draw()},update:function(Ptm,Ptd,idx){if(!this.screenGeom)return;if(idx===undefined)idx=this.screenGeom.length-1;if(idx<0)idx=0;if(idx>this.screenGeom.length-1)idx=this.screenGeom.length-1;this.screenGeom.set(idx,Ptm);if(this.closed)this.updateArea();this.length=Ptd.distance(Ptm);this.fulllength=this._length+this.length;this.draw()},updates:function(Pts){if(!this.screenGeom)this.screenGeom=new Points();this.screenGeom=Pts;this._length=this.length=this.fulllength=this.area=0;this.draw()},moveBy:function(dx,dy){this.screenGeom.moveBy(dx,dy);this.draw()},path:function(){var pt=this.screenGeom.item(0);if(pt==null)return;this.ctx.beginPath();this.ctx.moveTo(pt.x,pt.y);for(var p=1;p<this.screenGeom.length;p++){pt=this.screenGeom.item(p);if(pt==null)continue;this.ctx.lineTo(pt.x,pt.y)}delete pt;if(this.closed)this.ctx.closePath()},updateArea:function(){var area=0.0;var i,j,k;var NbPoint=this.screenGeom.length;if(NbPoint<3)return 0;var mapGeom=this.map.t.screenToMap(this.screenGeom,"Points");var TabPoint=mapGeom.geom;TabPoint.push(TabPoint[0]);TabPoint.push(TabPoint[1]);for(i=1,j=2,k=0;i<=NbPoint;i++,j++,k++){area+=TabPoint[i].x*(TabPoint[j].y-TabPoint[k].y)}TabPoint=[];delete TabPoint;this.area=Math.abs(area/2.0)}});var GSMAP_DRAWCIRCLE=104;var GSMAP_DRAWRECT=105;var GSMAP_DRAWPOLY=106;gsMapTools.circle=gsMapTools.extend({initialize:function(pMap){$write("gsMapTools.circle::initialize");this.parent(pMap);this.setMode(GSMAP_DRAWCIRCLE);this.setCursor("crosshair")},onMouseDown:function(ptDown){if(!this.circle)this.circle=new gsMapDraw.Circle(this.map);this.circle.update(ptDown,ptDown)},onMouseMove:function(ptMove,ptDown){this.circle.update(ptDown,ptMove)},onMouseUp:function(ptUp,ptDown){this.parent();this.circle.clear();this.clear()}});gsMapTools.rectangle=gsMapTools.extend({initialize:function(pMap){$write("gsMapTools.rectangle::initialize");this.parent(pMap);this.setMode(GSMAP_DRAWRECT);this.setCursor("crosshair")},onMouseDown:function(ptDown){if(!this.rectangle)this.rectangle=new gsMapDraw.Rectangle(this.map);this.rectangle.update(ptDown,ptDown)},onMouseMove:function(ptMove,ptDown){this.rectangle.update(ptDown,ptMove)},onMouseUp:function(ptUp,ptDown){this.parent();this.rectangle.clear();this.clear()}});gsMapTools.poly=gsMapTools.extend({initialize:function(pMap,bClosed){$write("gsMapTools.poly::initialize");this.parent(pMap);this.setMode(GSMAP_DRAWPOLY);this.setCursor("crosshair");this.bClosed=bClosed;if(!this.polygon)this.polygon=new gsMapDraw.Polygone(this.map);this.polygon.closed=this.bClosed;this.polygon.filled=this.bClosed},onMouseDown:function(ptDown){this.map.evt.detachOnMouseUp=false;this.polygon.addPoint(ptDown.copy());if(this.polygon._length==0){this.polygon.addPoint(ptDown.copy())}},onMouseMove:function(ptMove,ptDown){this.polygon.update(ptMove,ptDown)},onMouseUp:function(ptUp,ptDown){},onDblClick:function(ptUp,ptDown){this.parent();this.polygon.end();this.clear()}});gsMap.implement({drawCircle:function(){this.tool.destroy();this.tool=new gsMapTools.circle(this)},drawRect:function(){this.tool.destroy();this.tool=new gsMapTools.rectangle(this)},drawPoly:function(){this.tool.destroy();this.tool=new gsMapTools.poly(this,true)},drawLine:function(){this.tool.destroy();this.tool=new gsMapTools.poly(this,false)}});if(!window.CanvasRenderingContext2D){(function(){var G_vmlCanvasManager_={init:function(opt_doc){var doc=opt_doc||document;if(/MSIE/.test(navigator.userAgent)&&!window.opera){var self=this;doc.attachEvent("onreadystatechange",function(){self.init_(doc)})}},init_:function(doc,e){if(doc.readyState=="complete"){if(!doc.namespaces["g_vml_"]){doc.namespaces.add("g_vml_","urn:schemas-microsoft-com:vml")}var ss=doc.createStyleSheet();ss.cssText="canvas{display:inline-block;overflow:hidden;"+"text-align:left;}"+"canvas *{behavior:url(#default#VML)}"}},fixElement_:function(el){var outerHTML=el.outerHTML;var newEl=document.createElement(outerHTML);if(outerHTML.slice(-2)!="/>"){var tagName="/"+el.tagName;var ns;while((ns=el.nextSibling)&&ns.tagName!=tagName){ns.removeNode()}if(ns){ns.removeNode()}}el.parentNode.replaceChild(newEl,el);return newEl},initElement:function(el){el=this.fixElement_(el);el.getContext=function(){if(this.context_){return this.context_}return this.context_=new CanvasRenderingContext2D_(this)};var self=this;el.attachEvent("onpropertychange",function(e){switch(e.propertyName){case"width":case"height":break}});var attrs=el.attributes;if(attrs.width&&attrs.width.specified){el.style.width=attrs.width.nodeValue+"px"}if(attrs.height&&attrs.height.specified){el.style.height=attrs.height.nodeValue+"px"}return el}};G_vmlCanvasManager_.init();var dec2hex=[];for(var i=0;i<16;i++){for(var j=0;j<16;j++){dec2hex[i*16+j]=i.toString(16)+j.toString(16)}}function createMatrixIdentity(){return[[1,0,0],[0,1,0],[0,0,1]]}function matrixMultiply(m1,m2){var result=createMatrixIdentity();for(var x=0;x<3;x++){for(var y=0;y<3;y++){var sum=0;for(var z=0;z<3;z++){sum+=m1[x][z]*m2[z][y]}result[x][y]=sum}}return result}function copyState(o1,o2){o2.fillStyle=o1.fillStyle;o2.lineCap=o1.lineCap;o2.lineJoin=o1.lineJoin;o2.lineWidth=o1.lineWidth;o2.miterLimit=o1.miterLimit;o2.shadowBlur=o1.shadowBlur;o2.shadowColor=o1.shadowColor;o2.shadowOffsetX=o1.shadowOffsetX;o2.shadowOffsetY=o1.shadowOffsetY;o2.strokeStyle=o1.strokeStyle}function processStyle(styleString){var str,alpha=1;styleString=String(styleString);if(styleString.substring(0,3)=="rgb"){var start=styleString.indexOf("(",3);var end=styleString.indexOf(")",start+1);var guts=styleString.substring(start+1,end).split(",");str="#";for(var i=0;i<3;i++){str+=dec2hex[parseInt(guts[i])]}if((guts.length==4)&&(styleString.substr(3,1)=="a")){alpha=guts[3]}}else{str=styleString}return[str,alpha]}function processLineCap(lineCap){switch(lineCap){case"butt":return"flat";case"round":return"round";case"square":default:return"square"}}function CanvasRenderingContext2D_(surfaceElement){this.m_=createMatrixIdentity();this.element_=surfaceElement;this.mStack_=[];this.aStack_=[];this.currentPath_=[];this.strokeStyle="#000";this.fillStyle="#ccc";this.lineWidth=1;this.lineJoin="miter";this.lineCap="butt";this.miterLimit=10;this.globalAlpha=1};var contextPrototype=CanvasRenderingContext2D_.prototype;contextPrototype.clearRect=function(){this.element_.innerHTML="";this.currentPath_=[]};contextPrototype.beginPath=function(){this.currentPath_=[]};contextPrototype.moveTo=function(aX,aY){this.currentPath_.push({type:"moveTo",x:aX,y:aY})};contextPrototype.lineTo=function(aX,aY){this.currentPath_.push({type:"lineTo",x:aX,y:aY})};contextPrototype.arc=function(aX,aY,aRadius,aStartAngle,aEndAngle,aClockwise){if(!aClockwise){var t=aStartAngle;aStartAngle=aEndAngle;aEndAngle=t}var xStart=aX+(Math.cos(aStartAngle)*aRadius);var yStart=aY+(Math.sin(aStartAngle)*aRadius);var xEnd=aX+(Math.cos(aEndAngle)*aRadius);var yEnd=aY+(Math.sin(aEndAngle)*aRadius);this.currentPath_.push({type:"arc",x:aX,y:aY,radius:aRadius,xStart:xStart,yStart:yStart,xEnd:xEnd,yEnd:yEnd})};contextPrototype.stroke=function(aFill){var lineStr=[];var lineOpen=false;var a=processStyle(aFill?this.fillStyle:this.strokeStyle);var color=a[0];var opacity=a[1]*this.globalAlpha;lineStr.push('<g_vml_:shape',' fillcolor="',color,'"',' filled="',Boolean(aFill),'"',' style="position:absolute;width:10;height:10;"',' coordorigin="0 0" coordsize="10 10"',' stroked="',!aFill,'"',' strokeweight="',this.lineWidth,'"',' strokecolor="',color,'"',' path="');for(var i=0;i<this.currentPath_.length;i++){var p=this.currentPath_[i];if(p.type=="moveTo"){lineStr.push(" m ");var c=this.getCoords_(p.x,p.y);lineStr.push(Math.floor(c.x),",",Math.floor(c.y))}else if(p.type=="lineTo"){lineStr.push(" l ");var c=this.getCoords_(p.x,p.y);lineStr.push(Math.floor(c.x),",",Math.floor(c.y))}else if(p.type=="close"){lineStr.push(" x ")}else if(p.type=="arc"){lineStr.push(" ar ");var c=this.getCoords_(p.x,p.y);var cStart=this.getCoords_(p.xStart,p.yStart);var cEnd=this.getCoords_(p.xEnd,p.yEnd);var absXScale=this.m_[0][0];var absYScale=this.m_[1][1];lineStr.push(Math.floor(c.x-absXScale*p.radius),",",Math.floor(c.y-absYScale*p.radius)," ",Math.floor(c.x+absXScale*p.radius),",",Math.floor(c.y+absYScale*p.radius)," ",Math.floor(cStart.x),",",Math.floor(cStart.y)," ",Math.floor(cEnd.x),",",Math.floor(cEnd.y))}}lineStr.push(' ">');if(aFill){lineStr.push('<g_vml_:fill color="',color,'" opacity="',opacity,'" />')}else{lineStr.push('<g_vml_:stroke',' opacity="',opacity,'"',' joinstyle="',this.lineJoin,'"',' miterlimit="',this.miterLimit,'"',' endcap="',processLineCap(this.lineCap),'"',' weight="',this.lineWidth,'px"',' color="',color,'" />')}lineStr.push("</g_vml_:shape>");this.element_.insertAdjacentHTML("beforeEnd",lineStr.join(""));this.currentPath_=[]};contextPrototype.fill=function(){this.stroke(true)};contextPrototype.closePath=function(){this.currentPath_.push({type:"close"})};contextPrototype.getCoords_=function(aX,aY){return{x:(aX*this.m_[0][0]+aY*this.m_[1][0]+this.m_[2][0]),y:(aX*this.m_[0][1]+aY*this.m_[1][1]+this.m_[2][1])}};G_vmlCanvasManager=G_vmlCanvasManager_;CanvasRenderingContext2D=CanvasRenderingContext2D_})()}var GSMAP_MEASURERECT=111;var GSMAP_MEASUREPOLY=112;gsMapTools.measureCircle=gsMapTools.circle.extend({initialize:function(pMap){$write("gsMapTools.measureCircle::initialize");this.parent(pMap);this.setMode(GSMAP_MEASURECIRCLE);this.tooltip=new gsMapTooltip(this.map)},destroy:function(){this.parent();this.clear();this.tooltip.destroy()},clear:function(){this.tooltip.clear();this.circle.clear()},onMouseMove:function(ptMove,ptDown){this.parent(ptMove,ptDown);this.tooltip.o.align='in';this.tooltip.update(ptMove,this.toolTipText())},toolTipText:function(){var r=this.map.t.screenToMap(this.circle.scrRadius,"Number");return"R : "+r.parseUnit()}});gsMapTools.measureRectangle=gsMapTools.rectangle.extend({initialize:function(pMap){$write("gsMapTools.measureRectangle::initialize");this.parent(pMap);this.setMode(GSMAP_MEASURERECT);this.setCursor("crosshair");this.tooltip=new gsMapTooltip(this.map)},destroy:function(){this.parent();this.clear();this.tooltip.destroy()},clear:function(){this.tooltip.clear();this.rectangle.clear()},onMouseMove:function(ptMove,ptDown){this.parent(ptMove,ptDown);this.tooltip.o.align='cc';this.tooltip.update(ptMove.middle(ptDown),this.toolTipText())},toolTipText:function(){var rw=this.map.t.screenToMap(this.rectangle.screenWidth,"Number");var rh=this.map.t.screenToMap(this.rectangle.screenHeight,"Number");return"w="+rw.parseUnit()+" h="+rh.parseUnit()}});gsMapTools.measurePoly=gsMapTools.poly.extend({initialize:function(pMap,bClosed){$write("gsMapTools.measurePoly::initialize");this.parent(pMap,bClosed);this.setMode(GSMAP_MEASUREPOLY);this.setCursor("crosshair");this.tooltip=new gsMapTooltip(this.map,{offsetX:25});this.tooltips=new gsMapTooltips(this.map);this.tooltip.o.align='in';this.tooltip.o.fixed=this.bClosed},destroy:function(){this.parent();this.clear();this.tooltip.destroy()},clear:function(){this.tooltip.clear();this.tooltips.destroy();this.polygon.clear()},onMouseDown:function(ptDown){this.parent(ptDown);this.tooltipBis=new gsMapTooltip(this.map,{align:'cc'});if(this.polygon._length==0){this.tooltips.destroy();this.dr=0}this.tooltips.add(this.tooltipBis);if(this.bClosed&&(this.polygon.screenGeom.length==3)){this.tooltips.add(new gsMapTooltip(this.map,{align:'cc'}))}},onMouseMove:function(ptMove,ptDown){this.parent(ptMove,ptDown);this.tooltip.update(ptMove,this.toolTipText(),0,400);var d=this.map.t.screenToMap(this.polygon.length,"Number");this.tooltipBis.update(ptMove.middle(ptDown),d.parseUnit());if(this.bClosed&&(this.polygon.screenGeom.length>=3)){var p0=this.polygon.screenGeom.item(0);var d=ptMove.distance(p0);var dr=this.map.t.screenToMap(d,"Number");this.dr=dr;this.tooltips.tooltips[2].update(ptMove.middle(p0),dr.parseUnit())}},onDblClick:function(ptUp,ptDown){return true},toolTipText:function(){var d=this.map.t.screenToMap(this.polygon.length,"Number");var fd=this.map.t.screenToMap(this.polygon.fulllength,"Number");var sd=parseFloat(this.polygon.area);fd+=this.dr;var tt="d = "+d.parseUnit()+"<br>cumul = "+fd.parseUnit();if(this.polygon.area>0)tt+="<br>surface = "+sd.parseUnit2();return tt}});gsMap.implement({measureCircle:function(){this.tool.destroy();this.tool=new gsMapTools.measureCircle(this)},measureRect:function(){this.tool.destroy();this.tool=new gsMapTools.measureRectangle(this)},measurePoly:function(){this.tool.destroy();this.tool=new gsMapTools.measurePoly(this,true)},measureLine:function(){this.tool.destroy();this.tool=new gsMapTools.measurePoly(this,false)}});var GSMAP_SELECTIONCIRCLE=120;var GSMAP_SELECTIONRECT=121;var GSMAP_SELECTIONPOLY=122;var GSMAP_SELECTIONPOINT=123;gsMapTools.selectionPoint=gsMapTools.extend({initialize:function(pMap){$write("gsMapTools.selectionPoint::initialize");this.parent(pMap);this.setCursor("crosshair","dotsel.cur");this.setMode(GSMAP_SELECTIONPOINT)},onMouseDown:function(ptDown){this.point=ptDown}});gsMapTools.selectionCircle=gsMapTools.circle.extend({initialize:function(pMap){$write("gsMapTools.selectionCircle::initialize");this.parent(pMap);this.setCursor("crosshair","circsel.cur");this.setMode(GSMAP_SELECTIONCIRCLE)},onMouseUp:function(ptUp,ptDown){this.parent();this.circle.clear()}});gsMapTools.selectionRectangle=gsMapTools.rectangle.extend({initialize:function(pMap){$write("gsMapTools.selectionRectangle::initialize");this.parent(pMap);this.setMode(GSMAP_SELECTIONRECT);this.setCursor("crosshair","rectsel.cur")},onMouseUp:function(ptUp,ptDown){this.parent();this.rectangle.clear()}});gsMapTools.selectionPoly=gsMapTools.poly.extend({initialize:function(pMap,bClosed){$write("gsMapTools.selectionPoly::initialize");this.parent(pMap,bClosed);this.setMode(GSMAP_SELECTIONPOLY);this.setCursor("crosshair","polysel.cur")},onDblClick:function(ptUp,ptDown){this.parent();this.polygon.clear()}});gsMap.implement({selectionPoint:function(){this.tool.destroy();this.tool=new gsMapTools.selectionPoint(this)},selectionCircle:function(){this.tool.destroy();this.tool=new gsMapTools.selectionCircle(this)},selectionRect:function(){this.tool.destroy();this.tool=new gsMapTools.selectionRectangle(this)},selectionPoly:function(){this.tool.destroy();this.tool=new gsMapTools.selectionPoly(this,true)},deleteSelection:function(){this.draw("deleteSelection=true")}});var GSMAP_IDENTIFY=103;gsMapTools.identify=gsMapTools.extend({initialize:function(pMap){$write("gsMapTools.identify::initialize");this.parent(pMap);this.setMode(GSMAP_IDENTIFY);this.setCursor("help")},onMouseUp:function(ptUp,ptDown){$write("gsMapTools::identifyMouseUp = "+ptUp+" - "+ptDown)}});gsMap.implement({identify:function(){this.tool.destroy();this.tool=new gsMapTools.identify(this)}});var gsMapEditor=new Class({initialize:function(gLyr){$write("gsMapEditor::initialize");this.layer=gLyr;this.map=gLyr.map;this.serverScript='x_editor.php';var lv=this.map.layers.length;this.cOpt={id:'gsMapVectorLayer'+lv,clear:true};this.vertices=null;this.shape=null;this.objectId=null;this.map.editor=this;this.session=false;this.map.addEvent('onRequestSend',this.mapRequestSend.bind(this));this.map.addEvent('onRendered',this.draw.bind(this))},mapRequestSend:function(){if(this.shape)this.shape.clear();if(this.vertices)this.vertices.hide()},sendRequest:function(params){var url=this.serverScript+"?"+params;url+="&mapIT="+this.map._mapIT++;new Ajax(url,{method:'get',postBody:'',onFailure:this.onFailure.bind(this),onComplete:this.onComplete.bind(this)}).request()},onFailure:function(transport){alert(transport.responseText)},onComplete:function(request){if(!request)return;eval('var rs = '+request);if((rs.geom)&&(rs.objectId)){this.init(rs.objectId,rs.geom)}},init:function(objectId,geom){this.objectId=objectId;this.vertices=new gsMapVertices(this.map,geom);this.shape=new gsMapDraw.Polygone(this.map,this.cOpt);this.shape.updates(this.vertices.getScrGeom())},draw:function(){if(!this.vertices)return;this.vertices.update();this.shape.updates(this.vertices.getScrGeom())},clear:function(){if(this.shape)this.shape.clear();if(this.vertices)this.vertices.clear();this.shape=null;this.vertices=null;this.session=false}});var gsMapVertices=new Class({initialize:function(pMap,geom){$write("gsMapVertice:initialize");this.map=pMap;this.vertex=new Array();for(var p=0;p<geom.length;p++){var v=new gsMapVertex(pMap,p,geom[p]);this.vertex.push(v)}this.length=this.vertex.length},del:function(idx){if((idx<0)||(idx>this.length))return false;for(var p=idx+1;p<this.vertex.length;p++){this.vertex[p].index=p-1;this.vertex[p].updateTip()}this.vertex[idx].myTips.toolTip.remove();this.vertex[idx].div.remove();this.vertex.splice(idx,1);this.length--},add:function(idx,pt){if((idx<0)||(idx>this.length))return false;for(var p=idx;p<this.vertex.length;p++){this.vertex[p].index=p+1;this.vertex[p].updateTip()}var v=new gsMapVertex(this.map,idx,pt);this.vertex=this.vertex.insert(idx,v);this.length=this.vertex.length},clear:function(){for(var p=0;p<this.vertex.length;p++){this.vertex[p].myTips.toolTip.remove();this.vertex[p].div.remove()}this.vertex=[];this.length=0},update:function(){this.vertex.each(function(obj){obj.updateCenter();obj.div.show()},this)},getScrGeom:function(){var scrGeom=new Points();this.vertex.each(function(obj){this.add(obj.center)},scrGeom);return scrGeom},getMapGeom:function(){var mapGeom=new Array();this.vertex.each(function(obj){this.push({x:obj.geo.x,y:obj.geo.y})},mapGeom);return mapGeom},hide:function(){this.vertex.each(function(obj){obj.div.hide()})},addClass:function(className){this.vertex.each(function(obj){obj.div.addClass(className)})},removeClass:function(className){this.vertex.each(function(obj){obj.div.removeClass(className)})}});var gsMapVertex=new Class({initialize:function(pMap,Idx,Pt){this.map=pMap;this.index=Idx;Pt=new Point(Pt.x,Pt.y);this.center=this.map.t.mapToScreen(Pt,"Point");this.geo=Pt;this.init()},position:function(){this.div.style.left=this.center.x-3+'px';this.div.style.top=this.center.y-3+'px'},updateCenter:function(){this.center=this.map.t.mapToScreen(this.geo,"Point");this.position()},update:function(Pt){this.center=Pt;this.geo=this.map.t.screenToMap(Pt,"Point");this.updateTip();this.position()},updateTip:function(text){if(text===undefined)text="Point "+this.index+"::"+this.geo.toString();this.div.title=text;this.myTips.update(this.div)},onMouseDown:function(){this.map.editor.vertex=this},edit:function(el){el.myText="<input type='text' value='"+el.myText+"'>"},init:function(){this.div=new Element('div');this.div.id='vertex'+this.index;this.div.title="Point "+this.index+"::"+this.geo.toString();this.div.className='vertex';this.div.style.position='absolute';this.div.style.zIndex='200';this.position();this.div.onmousedown=this.onMouseDown.bindWithEvent(this);this.map._map.appendChild(this.div);this.myTips=new extTips([this.div],{maxTitleChars:150,offsets:{'x':5,'y':0}})}});var GSMAP_EDITADDOBJECT=114;var GSMAP_EDITMOVEOBJECT=115;var GSMAP_EDITDELOBJECT=116;var GSMAP_EDITADDVERTEX=117;var GSMAP_EDITMOVEVERTEX=118;var GSMAP_EDITDELVERTEX=119;gsMapTools.editSelect=gsMapTools.extend({initialize:function(pMap){$write("gsMapTools.editSelect::initialize");this.parent(pMap);this.setMode(GSMAP_EDITSELECT);this.setCursor("crosshair")},onMouseDown:function(ptDown){if(this.map.editor.vertices){alert("Session d'�dition d�j� en cours...");return}var pt=this.map.t.screenToMap(ptDown,"Point");this.map.editor.sendRequest("gsMapEditSelect=point:"+pt.toString())}});gsMapTools.addPoly=gsMapTools.poly.extend({initialize:function(pMap,bClosed){$write("gsMapTools.addPoly::initialize");this.parent(pMap,bClosed);this.toolPan=new gsMapTools.pan(this.map);this.panMove=new Point();this.panDown=new Point();this.setMode(GSMAP_EDITADDOBJECT);this.setCursor("crosshair");document.onkeydown=this.onKeyDown.bindWithEvent(this);document.onkeyup=this.onKeyUp.bindWithEvent(this);this.key=''},onMouseMove:function(ptMove,ptDown){if(this.key=='space'){if(this.panDown.isNull()){this.panDown=ptMove.copy();this.toolPan.onMouseDown(this.panDown)}this.panMove=ptMove;this.toolPan.onMouseMove(this.panMove,this.panDown);return}this.parent(ptMove,ptDown)},onKeyDown:function(e){$write("keydown = "+e.key);this.key=e.key;if(this.key=='space'){this.setCursor("move")}},onKeyUp:function(e){$write("keyup = "+e.key);this.toolPan.onMouseUp(this.panMove,this.panDown);var dx=dy=0;dx=this.panMove.x-this.panDown.x;dy=this.panMove.y-this.panDown.y;this.map.evt.ptDown.moveBy(dx,dy);this.p.moveBy(dx,dy);this.tooltips.moveBy(dx,dy);this.tooltip.moveBy(dx,dy);this.panMove.set();this.panDown.set();this.key='';this.setCursor("crosshair")},onDblClick:function(ptUp,ptDown){var pPoints=this.map.t.screenToMap(this.p.screenGeom,"Points");this.map.editor.init(-1,pPoints.geom);this.parent(ptUp,ptDown)}});gsMapTools.addVertex=gsMapTools.extend({initialize:function(pMap){$write("gsMapTools.addVertex::initialize");this.parent(pMap);this.setMode(GSMAP_EDITADDVERTEX);this.setCursor("pointer")},onMouseDown:function(ptDown){var idx=this.intersect(ptDown);if(!idx)return;var pt=this.map.t.screenToMap(ptDown,"Point");this.map.editor.vertices.add(idx,pt);this.map.editor.draw()},intersect:function(ptDown){var pVertex=this.map.editor.vertices.vertex.copy();pVertex.push(pVertex[0]);for(var v=1;v<pVertex.length;v++){if(this.intersection(pVertex[v-1].center,pVertex[v].center,ptDown,10)){return v}}return false},intersection:function(A,B,C,Rayon){var Alpha,Beta,Gamma,Delta;Alpha=(B.x-A.x)*(B.x-A.x)+(B.y-A.y)*(B.y-A.y);Beta=2*((B.x-A.x)*(A.x-C.x)+(B.y-A.y)*(A.y-C.y));Gamma=A.x*A.x+A.y*A.y+C.x*C.x+C.y*C.y-2*(A.x*C.x+A.y*C.y)-Rayon*Rayon;if((Beta*Beta-4*Alpha*Gamma)>=0){var u=((C.x-A.x)*(B.x-A.x)+(C.y-A.y)*(B.y-A.y))/((B.x-A.x)*(B.x-A.x)+(B.y-A.y)*(B.y-A.y));return(0<=u)&&(u<=1)}else{return false}}});gsMapTools.moveVertex=gsMapTools.extend({initialize:function(pMap){$write("gsMapTools.moveVertex::initialize");this.parent(pMap);this.setMode(GSMAP_EDITMOVEVERTEX);this.setCursor("default");this.l=new gsMapDraw.Polygone(this.map);this.l.closed=false;this.l.filled=false;this.map.editor.vertices.addClass('vertexMove')},destroy:function(){if(this.map.editor.vertices)this.map.editor.vertices.removeClass('vertexMove');this.parent()},onMouseDown:function(ptDown){$write("gsMapTools.moveVertex::onMouseDown");if(!this.map.editor.vertex)return;var pVertex=this.map.editor.vertices.vertex;var i=this.map.editor.vertex.index;var n=pVertex.length;var p=(i==0)?n-1:i-1;var s=(i==n-1)?0:i+1;this.l.addPoint(pVertex[p].center);this.l.addPoint(pVertex[i].center);this.l.addPoint(pVertex[s].center)},onMouseMove:function(ptMove,ptDown){if((ptMove.x==0)&&(ptMove.y==0))return;if(!this.map.editor.vertex)return;this.map.editor.vertex.update(ptMove);this.l.update(ptMove,ptDown,1)},onMouseUp:function(ptUp,ptDown){if(!this.map.editor.vertex)return;var i=this.map.editor.vertex.index;this.map.editor.vertex.update(ptUp.copy());this.map.editor.shape.update(ptUp,ptDown,i);this.map.editor.vertex=null;this.l.end();this.l.clear()}});gsMapTools.delVertex=gsMapTools.extend({initialize:function(pMap){$write("gsMapTools.delVertex::initialize");this.parent(pMap);this.setMode(GSMAP_EDITDELVERTEX);this.setCursor("pointer")},onMouseDown:function(ptDown){if(!this.map.editor.vertex)return;var i=this.map.editor.vertex.index;$write("gsMapTools.delVertex::onMouseDown i="+i);this.map.editor.vertices.del(i);this.map.editor.draw();this.map.editor.vertex=null}});gsMap.implement({editStart:function(){this.editor.session=true},editStop:function(){if(!this.editor.objectId)return;this.editor.sendRequest("gsMapEditStop=id:"+this.editor.objectId);this.editor.clear();this.editor.session=false},editSave:function(){if(!this.editor.vertices)return;var JsonGeom=this.editor.vertices.getMapGeom();this.editor.sendRequest("gsMapEditSave=id:"+this.editor.objectId+",geom:"+Json.toString(JsonGeom));this.editor.clear();this.editor.session=false},editSelect:function(){if(!this.editor.session){alert("Aucune session d'�dition active.");return}this.tool.destroy();this.tool=new gsMapTools.editSelect(this,false)},addLine:function(){if(!this.editor.session){alert("Aucune session d'�dition active.");return}this.tool.destroy();this.tool=new gsMapTools.addPoly(this,false)},addPoly:function(){if(!this.editor.session){alert("Aucune session d'�dition active.");return}if(this.editor.vertices){alert("Session d'�dition d�j� en cours...");return}this.tool.destroy();this.tool=new gsMapTools.addPoly(this,true)},addVertex:function(){if(!this.editor.session){alert("Aucune session d'�dition active.");return}if(!this.editor.vertices){alert("Aucune �dition en cours...");return}this.tool.destroy();this.tool=new gsMapTools.addVertex(this)},moveVertex:function(){if(!this.editor.session){alert("Aucune session d'�dition active.");return}if(!this.editor.vertices){alert("Aucune �dition en cours...");return}this.tool.destroy();this.tool=new gsMapTools.moveVertex(this)},delVertex:function(){if(!this.editor.session){alert("Aucune session d'�dition active.");return}if(!this.editor.vertices){alert("Aucune �dition en cours...");return}this.tool.destroy();this.tool=new gsMapTools.delVertex(this)}});var extTips=Tips.extend({update:function(el){el.myTitle=el.href?el.href.replace('http://',''):(el.rel||false);if(el.title){var dual=el.title.split('::');if(dual.length>1){el.myTitle=dual[0].trim();el.myText=dual[1].trim()}else{el.myText=el.title}el.removeAttribute('title')}else{el.myText=false}if(el.myTitle&&el.myTitle.length>this.options.maxTitleChars)el.myTitle=el.myTitle.substr(0,this.options.maxTitleChars-1)+"&hellip;"}});var gsMapLayerOpacity=new Class({getOptions:function(){return{classBar:'slider',classHandle:'handle',container:document.body,onComplete:Class.empty,startval:100,clientLayer:false}},initialize:function(pLayer,options){this.layer=pLayer;this.setOptions(this.getOptions(),options);if((this.layer)&&(!options.container))this.options.container=this.layer.map._divMap;this.bar=new Element('div').addClass(this.options.classBar).injectInside($(this.options.container));this.handle=new Element('div').addClass(this.options.classHandle).injectInside(this.bar);this.slider=new Slider(this.bar,this.handle,{onChange:function(pos){if(this.layer){this.layer.setOpacity(pos/100,this.options.clientLayer)}}.bind(this),onComplete:this.options.onComplete.bind(this),steps:100}).set(this.options.startval)}});gsMapLayerOpacity.implement(new Options);var gsMapLoading=new Class({getOptions:function(){return{classLoading:'loading',container:this.map._divMap,onComplete:Class.empty}},initialize:function(pMap,options){this.map=pMap;this.setOptions(this.getOptions(),options);this.loading=new Element('div').addClass(this.options.classLoading).injectInside($(this.options.container));this.map.addEvent('onRequestSend',this.show.bind(this));this.map.addEvent('onRequestResultError',this.hide.bind(this));this.map.addEvent('onRendered',this.hide.bind(this))},show:function(){this.loading.show()},hide:function(){this.loading.hide()}});gsMapLoading.implement(new Options);var gsMapHistory=new Class({initialize:function(pMap){$write("gsMapHistory::initialize");this.map=pMap;this.map.history=this;this.aExtent=new Array();this.pos=-1;this.bSkip=false;this.map.addEvent('onExtentChange',this.add.bind(this))},add:function(oExtent){if(this.bSkip){this.bSkip=false;return}if(this.pos<this.aExtent.length-1){this.aExtent.splice(this.pos+1,this.aExtent.length-this.pos-1)}this.aExtent.push(oExtent.toString());this.pos++},previous:function(){try{Infos2.getWindow("infoBulle").close()}catch(e){};if((this.aExtent.length==0)||(this.pos==0))return;this.pos--;this.bSkip=true;this.map.newExtent.set(this.aExtent[this.pos]);this.map.draw()},next:function(){try{Infos2.getWindow("infoBulle").close()}catch(e){};if((this.aExtent.length==0)||(this.pos==this.aExtent.length-1))return;this.pos++;this.bSkip=true;this.map.newExtent.set(this.aExtent[this.pos]);this.map.draw()}});gsMap.implement({previous:function(){this.history.previous()},next:function(){this.history.next()}});var direction;var ptFx=new Array();var gsMoveDirection=new Class({getOptions:function(){return{classContainer:'moveDirection'}},initialize:function(pMap,options){this.map=pMap;this.setOptions(this.getOptions(),options);this.pos=new Array();this.positionned();var that=this;this.panel=new panel(this.map._map,{onComplete:function(){that.drawFx()}});var divs=$$('.'+this.options.classContainer+' div');divs.addEvent('mousedown',this.zoomDirection.bind(this));divs.setOpacity(0.5);divs.addEvent('mouseover',this.show.bind(this));divs.addEvent('mouseout',this.hide.bind(this))},show:function(evt){var div=evt.target;if(div)div.setOpacity(1)},hide:function(evt){var div=evt.target;if(div)div.effect('opacity').start(1,0.5)},zoomDirection:function(evt){this.map.tool.setMode(GSMAP_PANKEYBOARD);Event.stop(evt);direction=Event.element(evt).id;$write("gsMapTools::zoomDirection = "+direction);this.move()},drawFx:function(){var dx=dy=0;var iDeltaHeight=this.map.extent.height/4;var iDeltaWidth=this.map.extent.width/4;switch(direction){case'movenorth':dy=iDeltaHeight;break;case'moveeast':dx=iDeltaWidth;break;case'movewest':dx=-iDeltaWidth;break;case'movesouth':dy=-iDeltaHeight;break;case'movenortheast':dx=iDeltaWidth;dy=iDeltaHeight;break;case'movenorthwest':dx=-iDeltaWidth;dy=iDeltaHeight;break;case'movesoutheast':dx=iDeltaWidth;dy=-iDeltaHeight;break;case'movesouthwest':dx=-iDeltaWidth;dy=-iDeltaHeight;break;default:break}this.map.newExtent.moveBy(dx,dy);this.map.draw()},positionned:function(){var w=this.map._divMap.offsetWidth;var h=this.map._divMap.offsetHeight;var l=0;var t=0;for(var i=0;i<ARR_DIRECTION.length+1;i++){this.pos[i]=new Array();switch(ARR_DIRECTION[i]){case'movesouth':this.pos[i]['left']=l;this.pos[i]['top']=t-h/4;break;case'movewest':this.pos[i]['left']=l+w/4;this.pos[i]['top']=t;break;case'moveeast':this.pos[i]['left']=l-w/4;this.pos[i]['top']=t;break;case'movenorth':this.pos[i]['left']=l;this.pos[i]['top']=t+h/4;break;case'movesouthwest':this.pos[i]['left']=l+w/4;this.pos[i]['top']=t-h/4;break;case'movesoutheast':this.pos[i]['left']=l-w/4;this.pos[i]['top']=t-h/4;break;case'movenorthwest':this.pos[i]['left']=l+w/4;this.pos[i]['top']=t+h/4;break;case'movenortheast':this.pos[i]['left']=l-w/4;this.pos[i]['top']=t+h/4;break;default:break}}},move:function(){$write("gsMapTools::movefx = move");var p=ARR_DIRECTION.arraySearch(direction);this.panel.start(this.pos[p]['top'],this.pos[p]['left']);ptFx[0]=this.pos[p]['top'];ptFx[1]=this.pos[p]['left'];return false}});gsMoveDirection.implement(new Options);var panel=new Class({initialize:function(elmnt,options){el=elmnt;if(el)el=$(elmnt);this.options=this.setOptions(this.getDefaultOptions(),options);this.moveTop=new Fx.Style(el,'top',this.options);this.options.onComplete=function(){};this.moveLeft=new Fx.Style(el,'left',this.options)},setOptions:function(defaults,options){return Object.extend(defaults,options||{})},getDefaultOptions:function(){return{duration:2400,transition:Fx.Transitions.quadInOut,onComplete:function(){}}},start:function(t,l){this.moveTop.start(t);this.moveLeft.start(l);return false}});var _action=new Class({initialize:function(elmnt,act,options){el=elmnt;if(el)el=$(elmnt);if($type(act)!='array')return;this.options=this.setOptions(this.getDefaultOptions(),options);this._fx=[];for(var i=0;i<act.length;i++){var temp=new Fx.Style(el,act[i].toString(),this.options);if(i!=0)this.options.onComplete=function(){};this._fx.push(temp)}},setOptions:function(defaults,options){return Object.extend(defaults,options||{})},getDefaultOptions:function(){return{duration:2400,transition:Fx.Transitions.quadInOut,onComplete:function(){}}},start:function(val){if(this._fx.length!=val.length)return;for(var i=0;i<val.length;i++){this._fx[i].start(val[i])}return false}});var GSMAP_PANKEYBOARD=105;var GSMAP_INFOBULL=106;var GSMAP_PRINT=107;var GSMAP_SEND_XLOAD=false;gsMapTools.implement({zoomScale:function(echelle){this.map.newExtent.toScale(1/echelle,this.map.srcExtent);this.map.draw()},sendActionToMap:function(query){this.map.draw(query)},sendDraw:function(){for(var lr=0;lr<this.map.layers.length;lr++){this.map.layers[lr].addQuery(this.query)}this.map.draw()},setInfo:function(){this.setMode(GSMAP_INFOBULL);this.setCursor("help","query.cur");this.info();return false},info:function(){if(this.mode!=GSMAP_INFOBULL)return;this.onMouseDown=function(ptDown){info.called(ptDown,'info.php')},this.onMouseMove=Class.empty;this.onMouseUp=Class.empty},affCadrePrint:function(){this.setMode(GSMAP_PRINT)},sendX_Load:function(param){GSMAP_SEND_XLOAD=true;this.query=param;this.sendDraw();GSMAP_SEND_XLOAD=false}});gsMap.implement({zoomScale:function(echelle){this.tool.zoomScale(echelle)},setInfo:function(){this.tool.setInfo()},affCadrePrint:function(){this.tool.affCadrePrint()},sendX_Load:function(param){this.tool.sendX_Load(param)},affMenuSelection:function(){this.tool.affMenuSelection()}});var refMapTop;var refMapLeft;var refMapwidth;var refMapheight;var gsMapReference=new Class({setOptions:function(options){this.o={refWidth:100,refHeight:100,rBoxMinW:8,rOffs:15,extent:'',scrExtent:'',container:document.body};Object.extend(this.o,options||{})},initialize:function(pMap,options){this.map=pMap;this.setOptions(options);this.ref=$(this.o.container);this.extent=new Extent(this.o.extent);if(this.o.scrExtent!=""){this.scrExtent=new Extent(this.o.scrExtent)}else{this.scrExtent=new Extent(0,0,this.ref.clientWidth,this.ref.clientHeight)}this.t=new Transform(this.scrExtent,this.extent);$write("gsMapReference::initialize - "+this.scrExtent.toString());this.refIT=0;var btop=0;if((this.ref.currentStyle)&&(!isNaN(parseInt(this.ref.currentStyle.borderTopWidth)))){var btop=parseInt(this.ref.currentStyle.borderTopWidth)}var bleft=0;if((this.ref.currentStyle)&&(!isNaN(parseInt(this.ref.currentStyle.borderTopHeight)))){var bleft=parseInt(this.ref.currentStyle.borderTopHeight)}this.top=this.ref.getTop()+btop;this.left=this.ref.getLeft()+bleft;this.width=this.ref.clientWidth;this.height=this.ref.clientHeight;this.ref.style.overflow='hidden';this.refbox=new Element('div');this.refbox.className="refBox";this.ref.appendChild(this.refbox);this.refcross=new Element('div');this.refcross.className="refCross";this.ref.appendChild(this.refcross);this.evt=new gsRefEvent(this);this.map.addEvent('onExtentChange',this.updateRefmap.bind(this))},updateRefmap:function(extent){$write("gsMapReference::updateRefmap");if(this.t==null)return;var refMapExtent=new Extent(extent.TLx,extent.TLy,extent.BRx,extent.BRy);var refMapSrcExtent=this.t.mapToScreen(refMapExtent,"Extent");this.setRefBox(refMapTop,refMapLeft,Math.abs(refMapwidth),Math.abs(refMapheight))},setRefBox:function(boxL,boxT,boxW,boxH){var rBox=this.refbox;var rCross=this.refcross;if(document.all){boxL=boxL+1;boxT=boxT+1}else{boxL=boxL-1;boxT=boxT-1;boxW=boxW-2;boxH=boxH-2}if(isNaN(boxL)||isNaN(boxT)||isNaN(boxW)||isNaN(boxH)||!isFinite(boxL)||!isFinite(boxT)||!isFinite(boxW)||!isFinite(boxH)){return}if(rBox){rBox.style.left=boxL;rBox.style.top=boxT;rBox.style.width=Math.round(Math.abs(boxW))+"px";rBox.style.height=Math.round(Math.abs(boxH))+"px"}if(rCross){if(boxW<this.o.rBoxMinW){rBox.style.visibility="hidden";rCross.style.visibility="visible";this.setRefCross(rCross,boxL,boxT,boxW,boxH)}else{rCross.style.visibility="hidden";rBox.style.visibility="visible"}}},setRefCross:function(rCross,boxL,boxT,boxW,boxH){var boxcX=parseInt(boxL)+parseInt((boxW/2));var boxcY=parseInt(boxT)+parseInt((boxH/2));rCross.style.left=parseInt((boxcX-this.o.rOffs))+"px";rCross.style.top=parseInt((boxcY-this.o.rOffs))+"px"},refMouseDown:function(ptDown){if(this.refbox.style.visibility=="visible")divTomove=this.refbox;else divTomove=this.refcross;this.originx=parseInt(divTomove.style.left);this.originy=parseInt(divTomove.style.top)},refMouseMove:function(ptMove,ptDown){if(this.refbox.style.visibility=="visible")divTomove=this.refbox;else divTomove=this.refcross;var refminx=parseInt(divTomove.style.left.split("px")[0]);var refminy=parseInt(divTomove.style.top.split("px")[0]);var refmaxx=parseInt(divTomove.style.left.split("px")[0])+divTomove.offsetWidth;var refmaxy=parseInt(divTomove.style.top.split("px")[0])+divTomove.offsetHeight;divTomove.style.top=(this.originy+(ptMove.y-ptDown.y))+"px";divTomove.style.left=(this.originx+(ptMove.x-ptDown.x))+"px"},refMouseUp:function(ptUp,ptDown){var refCroix=false;var rCross=this.refcross;var refminx=parseInt(divTomove.style.left.split("px")[0]);var refminy=parseInt(divTomove.style.top.split("px")[0]);var refmaxx=parseInt(divTomove.style.left.split("px")[0])+divTomove.offsetWidth;var refmaxy=parseInt(divTomove.style.top.split("px")[0])+divTomove.offsetHeight;var wimgRef=document.getElementById(DIVREFERENCE).offsetWidth;var himgRef=document.getElementById(DIVREFERENCE).offsetHeight;if(!document.all){refmaxx=refmaxx-2;refmaxy=refmaxy-2}if(rCross.style.visibility=="visible"){refminx=parseInt(divTomove.style.left.split("px")[0])+(divTomove.offsetWidth/2)+2;refminy=parseInt(divTomove.style.top.split("px")[0])+(divTomove.offsetHeight/2)+2;refmaxx=refminx+2;refmaxy=refminy+2}var parurl='xInit='+refminx+'&yInit='+refminy+'&xFin='+refmaxx+'&yFin='+refmaxy+'&wimgRef='+wimgRef+'&himgRef='+himgRef+'&act=zoomref';this.map.sendX_Load(parurl)}});var GSMAP_DOUBLECLICK=200;var gsRefEvent=new Class({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)},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);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"){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)}});var nbreOutil=6;var gsZoomScale=new Class({setOptions:function(options){this.o={};Object.extend(this.o,options||{})},initialize:function(zoomDivName,pMap,options){this.map=pMap;this.zoomScaleDiv=$(zoomDivName);this.setOptions(options);this.scale=[2600000,1800000,1000000,500000,100000,50000];this.aScaleBar=this.zoomScaleDiv.getElements('a');this.aScaleBar.each(function(el){el.addEvent('click',function(){this.liClick(el);this.subCurrent()}.bind(this));el.addEvent('mouseover',function(e){this.liMouseOver(el,e)}.bind(this));el.addEvent('mouseout',function(){this.liMouseOut(el)}.bind(this))},this);this.map.addEvent('onRequestResult',this.requestResult.bind(this))},requestResult:function(rs){this.updateZoomScale(rs.scale)},subCurrent:function(icur){for(nav=1;nav<=nbreOutil;nav++){cur=document.getElementById("zoom"+nav);if(icur==nav)cur.className="current";else cur.className=""}},liClick:function(el){var regZoom=/zoom/;var iKey=parseInt(el.id.replace(regZoom,''))-1;this.map._divZoomBox.hide();TOOLYET=true;closeGuide();this.map.sendX_Load('scale='+this.scale[iKey]+'&act=zoomScale')},liMouseOver:function(el,e){TOOLYET=true;var regZoom=/zoom/;var iKey=parseInt(el.id.replace(regZoom,''))-1;var num=this.scale[iKey];var scalstand=this.scale;var Larg=this.map.width;var haut=this.map.height;cartex=0;cartey=0;cartew=parseInt(this.map.width);carteh=parseInt(this.map.height);echelleCur=this.map.scale;var delta=Math.abs(scalstand[0]-echelleCur);var EchProx=scalstand[0];$nb=1;for(icount=1;icount<scalstand.length;icount++){if(Math.abs(scalstand[icount]-echelleCur)<delta){delta=Math.abs(scalstand[icount]-echelleCur);EchProx=scalstand[icount];$nb=icount+1}}if(num<EchProx){for(icount=0;icount<scalstand.length;icount++){if(EchProx==scalstand[icount]){vallargeur=(Larg*num)/EchProx;valhauteur=(haut*num)/EchProx;valleft=cartex+((cartew-vallargeur)/2);valtop=cartey+((carteh-valhauteur)/2)}}this.map._divZoomBox.style.display='block';ptDown=new Point(valleft,valtop);ptMove=new Point(valleft+vallargeur,valtop+valhauteur);this.zoomBox(ptMove,ptDown)}var idscale=el.id;var ttid='tt_nav'+idscale;ShowTip(e,ttid,idscale)},liMouseOut:function(el){this.map._divZoomBox.hide();var idscale=el.id;var ttid='tt_nav'+idscale;HideTip(ttid)},zoomBox:function(ptMove,ptDown){var zS=this.map._divZoomBox.style;zS.left=Math.min(ptMove.x,ptDown.x)+"px";zS.top=Math.min(ptMove.y,ptDown.y)+"px";zS.width=Math.abs(ptMove.x-ptDown.x)+"px";zS.height=Math.abs(ptMove.y-ptDown.y)+"px"},updateZoomScale:function(iScale){if(iScale<=50000)this.subCurrent(6);else if(iScale>50000&&iScale<=100000){if(Math.abs(50000-iScale)<Math.abs(100000-iScale)){this.subCurrent(6)}else{this.subCurrent(5)}}else if(iScale>100000&&iScale<=500000){if(Math.abs(100000-iScale)<Math.abs(500000-iScale)){this.subCurrent(5)}else{this.subCurrent(4)}}else if(iScale>500000&&iScale<=1000000){if(Math.abs(500000-iScale)<Math.abs(1000000-iScale)){this.subCurrent(4)}else{this.subCurrent(3)}}else if(iScale>1000000&&iScale<=1800000){if(Math.abs(1000000-iScale)<Math.abs(1800000-iScale)){this.subCurrent(3)}else{this.subCurrent(2)}}else if(iScale>1800000&&iScale<=2600000){if(Math.abs(1800000-iScale)<Math.abs(2600000-iScale)){this.subCurrent(2)}else{this.subCurrent(1)}}else if(iScale>2600000)this.subCurrent(1)}});goTimer=window.setTimeout("",1000);var imgId;var GSMAP_PANROLLER=104;var GSMAP_ZOOMINKEYBOARD=105;var GSMAP_ZOOMOUTKEYBOARD=106;var toolYet=new Class({initialize:function(pMap){this.map=pMap;this.map.toolYet=this;this.sizefactor;this.lastMode;this.lastW=this.map._map.offsetWidth;this.lastH=this.map._map.offsetHeight;this.lastestW;this.lastestH;this.lastestT;this.lastestL},resizeMap:function(dScale){unit=dScale.replace(/[0-9\.\, _-]/g,'');if($type(dScale)=='array'){var that=this;this._divMap=new _action(this.map._divMap,['width','height'],{duration:1000,onComplete:function(){that.map.setSize()}});this._divMap.start([dScale[0],dScale[1]])}if($type(dScale)!='array'&&unit=='%'){var w=this.map._divMap.offsetWidth;var h=this.map._divMap.offsetHeight;nW=(w*parseInt(dScale))/parseInt(this.map._size);nH=(h*parseInt(dScale))/parseInt(this.map._size);var that=this;this._divMap=new _action(this.map._divMap,['width','height'],{duration:1000,onComplete:function(){that.map.setSize()}});this._divMap.start([parseFloat(nW),parseFloat(nH)]);this.map._size=dScale}else return false},resizeMapWithStyle:function(strStyle,val){if(val=='')return false;if(val==0&&strStyle=='width')return false;if(val==0&&strStyle=='height')return false;this.map=gMap;switch(strStyle){case'top':this.map._divMap.style.top=val;this.map.setSizes();break;case'left':this.map._divMap.style.left=val;this.map.setSizes();break;case'width':this.map._divMap.style.width=val;this.map.setSizes();break;case'height':this.map._divMap.style.height=val;this.map.setSizes();break;default:return false;break}},reDraw:function(){sizefactor=this.sizefactor;this._clone=this.map._map.clone();this._clone.id='gsMapClone';this.map._map.parentNode.appendChild(this._clone);this.map._map.hide();this.map._map.style.width=this.lastW;this.map._map.style.height=this.lastH;var a=this.map._divMap.clientWidth;var b=this.map._divMap.clientHeight;ptA=new Point((a-a/sizefactor)/2,(b-b/sizefactor)/2);ptB=new Point(ptA.x+(a/sizefactor),(ptA.y+(b/sizefactor)));var srcExt=new Extent(ptA.x,ptA.y,ptB.x,ptB.y);var mapExt=this.map.t.screenToMap(srcExt,"Extent");this.map.setExtent(mapExt.toString());try{var i=Infos.getWindow(DIVINFO);var a=(i.storedLocation)?2:1;var iW=(i.storedLocation)?i.options.maxWidth:i.width;var iH=(i.storedLocation)?i.options.maxHeight:i.height;iW=this.map.t.screenToMap(iW,"Number");iH=this.map.t.screenToMap(iH,"Number");var pt=new Point(i.options.leftG,i.options.topG);var query="manageInfo="+a+"&ptInfo="+pt.x+","+pt.y+"&infoSize="+iW+","+iH;for(var lr=0;lr<this.map.layers.length;lr++){this.map.layers[lr].addQuery(query)}real=false}catch(e){};this.map.draw();this.map.evt.wheelCount=0;this.lastestW=0;this.lastestH=0;this.lastestT=0;this.lastestL=0;return false},wheelZoom:function(sizefactor){$clear(goTimer);this.sizefactor=sizefactor;this.moveImg();goTimer=this.map.toolYet.reDraw.delay(1000,this)},moveImg:function(){sizeFactor=this.sizefactor;if(this.map.tool.mode!=GSMAP_PANROLLER)this.lastMode=this.map.tool.mode;this.map.tool.setMode(GSMAP_PANROLLER);if($('gsMapClone')){$('gsMapClone').remove();$('gsMapContainer').show()}this.oldW=this.lastW;this.oldH=this.lastH;this.lastestW=this.newW=this.oldW*sizeFactor;this.lastestH=this.newH=this.oldH*sizeFactor;this.lastestL=this.newLeft=(this.oldW-this.newW)/2;this.lastestT=this.newTop=(this.oldH-this.newH)/2;this.map._map.style.width=this.newW;this.map._map.style.height=this.newH;this.map._map.style.left=this.newLeft;this.map._map.style.top=this.newTop;this.map._map.style.position="absolute"},imgComplete:function(){this.map._map.show();new Fx_.Fade('gsMapClone',{duration:0.3});this.map.tool.setMode(this.lastMode)}});gsMap.implement({resizeMap:function(dScale){this.toolYet.resizeMap(dScale)},resizeMapWithStyle:function(strStyle,val){this.toolYet.resizeMapWithStyle(strStyle,val)},resizeByScale:function(){this.toolYet.resizeByScale()},resizeBySizeFactor:function(nb){this.toolYet.resizeBySizeFactor(nb)},wheelZoom:function(sizefactor){this.toolYet.wheelZoom(sizefactor)}});var MAPCONTAINER='gsMapContainer';var MAPCONTAINERINDEX='visualisation';var DIVECHELLE='echelle';var DIVINFO='info';var ARR_DIRECTION=new Array('movesouthwest','movenorth','movenortheast','movewest','moveeast','movesouth','movesoutheast','movenorthwest');var FULLEXTENT="138476 1753000 644323 2090000";var DIVREFERENCE="gsMapRef";var KEYPAN=true;var GSMAP_VISIBLE=152;var GSMAP_ZOOM_OBJ=153;var GSMAP_RESIZE=300;var GSMAP_CHG_CARTE=158;