var map;var _ROUTING;function homeLoad(){loadMap()}function persoLoad(){loadMap()}function loadMap(){if(GBrowserIsCompatible()){map=new GMap2(document.getElementById("map"));map.enableDoubleClickZoom();map.setCenter(new GLatLng(48.85,2.33),11);map.addControl(new GOverviewMapControl());map.addControl(new GLargeMapControl());map.addControl(new GMenuMapTypeControl())}}function Bison(a){this.map=a;this.moduleIcon=$("bison_img");this.zoomLevel=9;this.code2Tag=['<span class="green">Habituel</span>','<span class="orange">Difficile</span>','<span class="red">Tr\u00e8s difficile</span>','<span class="black">Extr\u00eamement difficile</span>'];this.postalCode="00";this.bisonData;this.bisonDate;this.reload()}Bison.prototype.reload=function(){GEvent.trigger(this,"loading");GDownloadUrl("bison.aspx?date="+this.getDate(),function(a,b){if(b!=200){$("bison_content").innerHTML="Error";GEvent.trigger(this,"loadingfinished");return}this.bisonData=a.evalJSON();this.bisonDate=new Date();this.show(this.bisonData["dept"+this.postalCode]);GEvent.trigger(this,"loadingfinished")}.bind(this))};Bison.prototype.getDate=function(){var a=new Date();return _padTimeUnit(a.getDate())+"/"+_padTimeUnit(a.getMonth()+1)+"/"+a.getFullYear()};Bison.prototype.refreshWithPostCode=function(a){this.postalCode=(map.getZoom()>this.zoomLevel)?a:"00";if(_sameDay(new Date(),this.bisonDate)){this.show(this.bisonData["dept"+this.postalCode])}else{this.reload()}};Bison.prototype.show=function(a){$("bison_content").innerHTML='<table><tbody><tr><td id="bison_zone">'+a.name+'</td><td class="bison_day">Aujourd\'hui</td><td class="bison_day">Demain</td><tr><td class="bison_dep">D\u00e9parts</td><td class="bison_value">'+this.code2Tag[a.values[0]]+'</td><td class="bison_value">'+this.code2Tag[a.values[2]]+'</td><tr><td class="bison_arr">Retours</td><td class="bison_value">'+this.code2Tag[a.values[1]]+'</td><td class="bison_value">'+this.code2Tag[a.values[3]]+"</td></tr></tbody></table>"};function savemap(){if(!_isUserConnected()){openLoginDialog(true);return}var a=map.getCenter(),c=map.getZoom(),d="";try{if(c<8){d=_currentAddress.AddressDetails.Country.CountryName}else{if(c<9){d=_currentAddress.AddressDetails.Country.AdministrativeArea.AdministrativeAreaName}else{if(c<11){d=_currentAddress.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.SubAdministrativeAreaName}else{d=_currentAddress.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName}}}}catch(b){if(d==""){d="Ma carte"}}GDownloadUrl("savemap.aspx",function(e,f){if(f==200){$("saved_maps").insert(e)}},"action=save&zoom="+map.getZoom()+"&lat="+a.lat()+"&long="+a.lng()+"&libelle="+d)}function delmap(a){if(!confirm("Voulez-vous supprimer cette carte?")){return false}GDownloadUrl("savemap.aspx",function(b,c){if(c==200){$("saved_map_"+a).remove()}},"action=del&idcarte="+a)}function saveparcours(){if(!_isUserConnected()){openLoginDialog(true);return}var a=document.getElementById("tps");GDownloadUrl("saveparcours.aspx",function(b,c){if(c==200){$("saved_itis").insert(b)}},"action=save&code_parcours="+a.options[a.selectedIndex].value+"&parcours="+a.options[a.selectedIndex].text)}function delitin(a){if(!confirm("Voulez-vous supprimer ce parcours?")){return false}GDownloadUrl("saveparcours.aspx",function(b,c){if(c==200){$("saved_iti_"+a).remove()}},"action=del&code_parcours="+a)}function savehome(){var a=map.getCenter();location.href="inscription.aspx?lat="+a.lat()+"&lng="+a.lng()+"&zoom="+map.getZoom()}function sendfriend(){var a=map.getCenter();location.href="sendfriend.aspx?lat="+a.lat()+"&lng="+a.lng()+"&zoom="+map.getZoom()}function focusAddressField(){$("address").value=""}function blurAddressField(){if($("address").value.strip()==""){$("address").value="Ville, code postal, etc."}}function loginsubmit(){__doPostBack("txtvalid","")}function geolookup(){var a=$("address").value;if(a.length==0){alert("Vous devez entrer une adresse !")}else{_logPageview("/form/search");_geocoder.getLocations(a,onresponse)}}function onresponse(a){if(!a||a.Status.code!=G_GEO_SUCCESS){alert("Impossible de trouver l'adresse: "+a.name)}else{place=a.Placemark[0];point=new GLatLng(place.Point.coordinates[1],place.Point.coordinates[0]);cc=place.AddressDetails.Country.CountryNameCode;if(cc!="FR"){alert("Pas de résultat. La recherche est limitée à la France.")}else{var c=place.AddressDetails.Accuracy;var b;if(c==1){b=6}else{if(c==2){b=7}else{if(c==3){b=8}else{if(c==4||c==5){b=12}else{if(c==6||c==7){b=16}else{b=17}}}}}map.setCenter(point,b)}}}function visibilite(a,b){if($(a).toggle().visible()){$(b).writeAttribute({src:"img/chk/collapse.gif",title:"R\u00e9duire le module"})}else{$(b).writeAttribute({src:"img/chk/expand.gif",title:"Ouvrir le module"})}save_collapsed()}function save_order(){var a=Sortable.serialize("modulePile");new Ajax.Updater("ajax_status","savepref.aspx",{evalScripts:true,method:"post",postBody:a});return false}function save_collapsed(){var a=new Array();$$(".modul_wrap").each(function(b){if(b.visible()){a.push(b.id)}});a="collapsed="+a.flatten();new Ajax.Updater("ajax_status","savepref.aspx",{evalScripts:true,method:"post",postBody:a});return false}var events,itinerary,bison,pois,routing;var crToggler;var mf;var crManager;var traficOverlay;var map;var _geocoder,_currentAddress;var wms1;var wmsLayer="cr_trafic";function VTCopyrightControl(){}VTCopyrightControl.prototype=new GControl();VTCopyrightControl.prototype.initialize=function(b){var a=document.createElement("img");a.setAttribute("src","img/vtrafic_logo_map.gif");b.getContainer().appendChild(a);return a};VTCopyrightControl.prototype.getDefaultPosition=function(){return new GControlPosition(G_ANCHOR_BOTTOM_LEFT,new GSize(68,8))};function checkBrowser(){if(!GBrowserIsCompatible()){return}}function homeLoad(a){checkBrowser();setTime();loadMap(a,function(){crManager=new CRLayerManager(map);crToggler=new CRToggleControl(crManager);crManager.show();map.addControl(crToggler);map.addControl(new GMenuMapTypeControl())})}function persoLoad(a){checkBrowser();setTime();loadMap(a,function(){crManager=new CRLayerManager(map,1000);crToggler=new CRToggleControl(crManager);map.addControl(crToggler);map.addControl(new GMenuMapTypeControl());loadingIndicator=new LoadingIndicator("loading_overlay");var c=document.location.href.toQueryParams();events=new Events(map,c);if(getBisonState()!="n"){bison=new Bison(map)}itinerary=new Itinerary(map,crManager,crToggler);pois=new Pois(map,c);if(getMeteoState()!="n"){mf=new MeteoFrance(map);loadingIndicator.watch(mf);mf.setState(c)}loadingIndicator.watch(crManager.wms);loadingIndicator.watch(events);loadingIndicator.watch(pois);loadingIndicator.watch(itinerary);GEvent.addListener(map,"moveend",reverseGC);initTabs();window.setTimeout(function(){if(_activeTab.id=="trafic_tab"){crManager.show()}},2000);if(typeof(Providers)=="function"&&typeof(Providers.prototype)=="object"){var b=new Providers(map,$("providers"))}GEvent.addDomListener($("refresh"),"click",redrawMap);$("cities").selectedIndex=0;GEvent.trigger(map,"moveend")})}function loadMap(g,f){var h=G_HYBRID_MAP;h.getName=function(j){return"Satellite"};map=new GMap2($("map"),{mapTypes:[G_NORMAL_MAP,h,G_PHYSICAL_MAP]});if(f){var e=GEvent.addListener(map,"load",function(){GEvent.removeListener(e);f(this)})}var c=map.getMapTypes();for(var d=0;d<c.length;d++){c[d].getMinimumResolution=function(){return 5};c[d].getMaximumResolution=function(){return 17}}_geocoder=new GClientGeocoder();_geocoder.setBaseCountryCode("FR");map.enableDoubleClickZoom();map.enableScrollWheelZoom();map.enableContinuousZoom();map.addControl(new GScaleControl(),new GControlPosition(G_ANCHOR_BOTTOM_LEFT,new GSize(3,38)));map.addControl(new GLargeMapControl());map.addControl(new VTCopyrightControl());var a={buttonStartingStyle:{border:"none"},buttonHTML:'<img alt="Zoom glissant" src="img/dragzoom.png">',buttonStyle:{width:"19px",height:"19px"},buttonZoomingHTML:'<img alt="Cliquez pour annuler" src="img/dragzoom.png">',buttonZoomingStyle:{width:"19px",height:"19px"},backButtonEnabled:false,overlayRemoveTime:1000};map.addControl(new DragZoomControl({},a,{}),new GControlPosition(G_ANCHOR_TOP_LEFT,new GSize(27,230)));GEvent.addListener(map,"zoomend",function(k,j){_logPageview((j>k)?"/map/zoomIn":"/map/zoomOut")});GEvent.addListener(map,"moveend",function(){_logPageview("/map/move")});if(g.cp){var b=$("address");b.value=g.cp;geolookup()}else{map.setCenter(new GLatLng(g.lat,g.lng),g.zoom)}}function reverseGC(){_geocoder.getLocations(map.getCenter(),function(b){if(b.Status.code!=200){return}_currentAddress=b.Placemark[0];if(bison!=null){try{bison.refreshWithPostCode(b.Placemark[0].AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.PostalCode.PostalCodeNumber.substr(0,2))}catch(a){return}}})}function redrawMap(){setTime();if(!itinerary.loaded&&$("cr_toggle_checkbox").checked){crManager.refresh()}events.reload(events.allCodes);pois.reload();itinerary.reload();bison.reload();mf.reload();GEvent.trigger(map,"moveend")}function _padTimeUnit(a){return(a>=10)?a:("0"+a)}function _sameDay(b,a){return(Math.floor(b.valueOf()/86400000)==Math.floor(a.valueOf()/86400000))}function setTime(){var a=new Date();$("time").update(_padTimeUnit(a.getHours())+":"+_padTimeUnit(a.getMinutes()))}function getWindowHeight(){if(window.self&&self.innerHeight){return self.innerHeight}if(document.documentElement&&document.documentElement.clientHeight){return document.documentElement.clientHeight}return 0}function resizeMap(){var c=0;var b=document.getElementById("map");while(b!=null){c+=b.offsetTop;b=b.offsetParent}var d=getWindowHeight();var a=d-c-20;if(a>=0){b=document.getElementById("map");b.style.height=a+"px";map.checkResize()}}function openLoginDialog(b,a){$("modalBackground").show();if(a&&$("redirMode")!=null){$("redirMode").value=a}new Effect.Appear("loginBox",{duration:0.5,queue:{scope:"connect"}})}function closeLoginDialog(){$("loginBox").hide();$("modalBackground").hide();activateTab($("trafic_tab"))}function tryToConnect(){var c=GXmlHttp.create();var b=$("semail").value;var a=$("spass").value;var d=$("redirMode").value;c.open("POST","connect.aspx",true);c.onreadystatechange=function(){if(c.readyState==4){var f=c.responseText;if(f=="OK"){if(d!=""){setUrlAnchor(d)}window.location.reload()}else{var e=$("errorcon");e.innerHTML=f;e.style.display="block"}}};c.setRequestHeader("Man","POST connect.aspx HTTP/1.1");c.setRequestHeader("Content-Type","application/x-www-form-urlencoded");c.send("semail="+b+"&spass="+a.md5())}function setUrlAnchor(a){var c=window.location.href;var b;if((b=c.indexOf("#"))!=-1){window.location.href=c.substring(0,b+1)+a}else{window.location.href=c+"#"+a}}var jumpZones=new Hash();function addJumpZone(c,d,b,a){jumpZones.set(c,{name:c,coords:new GLatLng(d,b),zl:a})}addJumpZone("France",47,1.9,6);addJumpZone("France_IDF",48.85681,2.33734,9);addJumpZone("France_NO",49.18664,-1.40831,7);addJumpZone("France_NE",48.955199,4.363976,7);addJumpZone("France_O",46.83765,-1.14258,7);addJumpZone("France_E",46.978144,4.77459,7);addJumpZone("France_SO",44.445546,1.441269,7);addJumpZone("France_SE",44.154869,4.616661,7);addJumpZone("IDF_Paris",48.85681,2.33734,12);addJumpZone("IDF_NO",48.95497,2.12997,11);addJumpZone("IDF_NE",48.9694,2.56737,11);addJumpZone("IDF_SO",48.73264,2.129288,11);addJumpZone("IDF_SE",48.75121,2.57629,11);addJumpZone("Paris_Centre",48.85681,2.33734,14);addJumpZone("Paris_NO",48.88052,2.29357,13);addJumpZone("Paris_NE",48.88018,2.38403,13);addJumpZone("Paris_SO",48.83309,2.29717,13);addJumpZone("Paris_SE",48.83421,2.383,13);addJumpZone("Bordeaux",44.837325,-0.576051,12);addJumpZone("Lille",50.637183,3.063017,12);addJumpZone("Lyon",45.767299,4.834329,12);addJumpZone("Marseille",43.454006,5.469425,10);addJumpZone("Nantes",47.216795,-1.556727,11);addJumpZone("Paris",48.856558,2.350966,12);addJumpZone("Toulouse",43.604363,1.443007,11);addJumpZone("Nice",43.703250203122366,7.2784423828125,13);function miniMap(b){var a=jumpZones.get(b);map.setCenter(a.coords,a.zl);_logPageview("/module/directAccess/"+b)}function miniMapSprite(b,a){$(b).setStyle({backgroundPosition:"-"+(a*$(b).getWidth())+"px 0"})}function CRToggleControl(a){this.crManager=a;this.crToggle=null}CRToggleControl.prototype=new GControl();CRToggleControl.prototype.initialize=function(d){var a=$("cr_toggle_div"),c=$("cr_legend"),b=$("cr_legend_toggle");this.crtoggle=$("cr_toggle_checkbox");this.crColorBlindToggle=$("cr_cblind_toggle");d.getContainer().appendChild(a.show());this.crtoggle.setAttribute("checked","checked");GEvent.bindDom(this.crtoggle,"click",this,function(){if(this.crtoggle.checked){this.crManager.show()}else{this.crManager.hide()}});GEvent.bindDom(b,"click",this,function(){c.toggle();b.update(c.visible()?"Replier":"L&eacute;gende")});GEvent.bindDom(this.crColorBlindToggle,"click",this,function(){this.toggleColorBlindnessMode(this.crColorBlindToggle.checked)});GEvent.bindDom($("cr_cblind_cancel"),"click",this,function(){this.toggleColorBlindnessMode(false)});if(getCookie("colorBlind")=="y"){this.crColorBlindToggle.setAttribute("checked","checked");this.toggleColorBlindnessMode(true)}return a};CRToggleControl.prototype.lock=function(a){if(a){this.crtoggle.setAttribute("disabled","disabled");this.crColorBlindToggle.setAttribute("disabled","disabled");GEvent.clearListeners($("cr_cblind_cancel"))}else{this.crtoggle.removeAttribute("disabled");this.crColorBlindToggle.removeAttribute("disabled");GEvent.addDomListener($("cr_cblind_cancel"),"click",function(){this.toggleColorBlindnessMode(false)}.bind(this));if(this.crtoggle.checked){this.crManager.refresh()}}};CRToggleControl.prototype.lockAndHide=function(a){if(a){this.crtoggle.setAttribute("disabled","disabled");this.crColorBlindToggle.setAttribute("disabled","disabled");GEvent.clearListeners($("cr_cblind_cancel"));if((this.previousState=this.crtoggle.checked)){this.crManager.hide()}}else{this.crtoggle.removeAttribute("disabled");this.crColorBlindToggle.removeAttribute("disabled");GEvent.addDomListener($("cr_cblind_cancel"),"click",function(){this.toggleColorBlindnessMode(false)}.bind(this));if(this.previousState){this.crManager.show()}}};CRToggleControl.prototype.getDefaultPosition=function(){return new GControlPosition(G_ANCHOR_TOP_RIGHT)};CRToggleControl.prototype.toggleColorBlindnessMode=function(a){if(a&&!$("cr_cblind_warning").visible()){$$("#cr_colors img").each(function(b){b.src=b.src.replace(".png","_dalt.png")});$("cr_cblind_warning").show();$("cr_cblind_toggle").checked="checked";setCookie("colorBlind","y",30)}else{$$("#cr_colors img").each(function(b){b.src=b.src.replace("_dalt.png",".png")});$("cr_cblind_warning").hide();$("cr_cblind_toggle").checked=false;delCookie("colorBlind")}this.crManager.setColorBlindMode(a);if(this.crtoggle.checked){this.crManager.refresh()}};function setCookie(a,c,d){if(d){var b=new Date();b.setTime(b.getTime()+(d*24*3600*1000));document.cookie=a+"="+escape(c)+";expires="+b.toGMTString()}else{document.cookie=a+"="+escape(c)}}function delCookie(a){setCookie(a,"",-1)}function getCookie(a){deb=document.cookie.indexOf(a+"=");if(deb>=0){deb+=a.length+1;fin=document.cookie.indexOf(";",deb);if(fin<0){fin=document.cookie.length}return unescape(document.cookie.substring(deb,fin))}return""}function _isUserConnected(){return getCookie("iduser")!=""}var _activeTab;function getTab(){var a=0;if((a=window.location.href.indexOf("#"))==-1){return""}return window.location.href.substring(a+1)}function initTabs(){$$("#tabs div.tab").each(function(b){var a=$(b.id+"_tooltip");GEvent.addDomListener(b,"click",function(){if(a){a.hide()}activateTab(b)});if(a){b.observe("mousemove",function(c){if(b.id==_activeTab.id){return}tooltip(a,c,true)});b.observe("mouseout",function(c){if(b.id==_activeTab.id){return}tooltip(a,c,false)})}if(b.hasClassName("active")){_activeTab=b}});if(getTab()=="vtactic"){activateTab($("routing_tab"))}}function tooltip(a,b,c){if(c){if(!a.visible()){a.setStyle({left:b.pointerX()+5+"px",top:b.pointerY()+5+"px"})}a.show()}else{a.hide()}}function activateTab(a){if(a==null||a.id==_activeTab.id){return}_activeTab.removeClassName("active");_activeTab=a.addClassName("active");if(a.id=="routing_tab"){if(_ROUTING!=undefined){if(getDRSState()!="y"){$("routingPanel").innerHTML="<b>Le calculateur d'itin&eacute;raire est actuellement en maintenance.<br />&nbsp;<br />Veuillez nous en excuser, merci.</b>"}else{if(routing==null){routing=new Routing(map,"routingPanel",{autoRecompute:true})}else{routing.show()}}$("static_module").hide();itinerary.unload(true);$("modulePile").hide();crToggler.lockAndHide(true);$("cr_toggle_div").hide();$("routingWrapper").show();if(_isUserConnected()){$("trafic_selection").hide();$("routing_selection").show()}setUrlAnchor("vtactic");if(getRoutingAuthState()!="True"){openLoginDialog(true,"vtactic")}}}else{if(a.id=="trafic_tab"){if(_ROUTING!=undefined){if(routing!=null){routing.hide()}$("routingWrapper").hide();$("static_module").show();$("modulePile").show();crToggler.lockAndHide(false);$("cr_toggle_div").show()}if(_isUserConnected()){$("routing_selection").hide();$("trafic_selection").show()}setUrlAnchor("trafic")}}}var loadingIndicator;function LoadingIndicator(d){this.elt=$(d);var c=$("map");var b=c.positionedOffset();var a=c.getDimensions();this.elt.style.top=b.top+a.height/2+"px";this.elt.style.left=b.left+a.width/2+"px";this.elt.style.cursor="pointer";GEvent.addDomListener(this.elt,"click",function(){this.destroy()}.bind(this));this.loadingProcesses=0;this.handlers=[]}LoadingIndicator.prototype.increment=function(){this.loadingProcesses++;if(this.loadingProcesses>0){this.elt.show()}};LoadingIndicator.prototype.decrement=function(){this.loadingProcesses--;if(this.loadingProcesses==0){this.elt.hide()}};LoadingIndicator.prototype.watch=function(a){this.handlers.push(GEvent.addListener(a,"loading",function(){this.increment()}.bind(this)));this.handlers.push(GEvent.addListener(a,"loadingfinished",function(){this.decrement()}.bind(this)))};LoadingIndicator.prototype.destroy=function(){this.handlers.each(function(a){GEvent.removeListener(a)});this.elt.remove()};function SimGetTileUrl(j,h){var g=G_NORMAL_MAP.getProjection().fromPixelToLatLng(new GPoint(j.x*256,(j.y+1)*256),h);var e=G_NORMAL_MAP.getProjection().fromPixelToLatLng(new GPoint((j.x+1)*256,j.y*256),h);var c=g.y;var f=e.y;if(c<f){var m=f;f=c;c=m}var k=g.x+","+f+","+e.x+","+c;var l=new GLatLngBounds(new GLatLng(f,g.x),new GLatLng(c,e.x));if(!l.intersects(this.crBbox)){return this.transparentTile}var d=this.myBaseURL+this.myLayers+"&BBOX="+k;if(!this.layerDate){d+="&id="+(new Date()).getTime()}else{d+="&fdate="+this.layerDate.getFullYear()+"-"+(this.layerDate.getMonth()+1)+"-"+this.layerDate.getDate()+"%20"+this.layerDate.getHours()+":"+this.layerDate.getMinutes()+":00"}return d}function CRLayerManager(b,a){this.map=b;this.SIMurl=getMapServerUrl()+"?mod=cr&mr=";this.MAPSERVER_PARAMS="&SERVICE=WMS&REQUEST=GetMap&VERSION=1.3.0&WIDTH=256&HEIGHT=256&BGCOLOR=0xFFFFFF&STYLES=&TRANSPARENT=TRUE&CRS=EPSG:3785&FORMAT=image/png&LAYERS=";this.NORMAL_MAPFILE="cr_trafic_wms.map";this.NORMAL_LAYER="cr_trafic";this.colorBlindMode=false;this.added=false;this.copyrights=new GCopyrightCollection("Sources :");this.wms=new GTileLayer(this.copyrights,5,17,{isPng:true,opacity:(Prototype.Browser.IE?1:0.8)});this.wms.myBaseURL=this.SIMurl+this.NORMAL_MAPFILE+this.MAPSERVER_PARAMS;this.wms.myLayers=this.NORMAL_LAYER;this.wms.crBbox=new GLatLngBounds(new GLatLng(41.5,-5.5),new GLatLng(51.5,9.5));this.wms.transparentTile="img/transparent-tile.png";this.wms.layerDate=null;if(Prototype.Browser.IE||Prototype.Browser.Opera){this.wms.getTileUrl=SimGetTileUrl}else{this.wms.customGetTileUrl=SimGetTileUrl;this.wms.getTileUrl=function(d,c){var f=this;GEvent.trigger(this,"loading");var e=new Image();e.onload=function(){GEvent.trigger(f,"loadingfinished",true)};e.onerror=e.onabort=function(){GEvent.trigger(f,"loadingfinished",false)};return(e.src=this.customGetTileUrl(d,c))}}this.crOverlay=new GTileLayerOverlay(this.wms)}CRLayerManager.prototype.setDate=function(a){this.wms.layerDate=a;this.refresh()};CRLayerManager.prototype.setColorBlindMode=function(a){if(a&&!this.colorBlindMode){this.wms.myLayers+="_dalt"}else{if(!a&&this.colorBlindMode){this.wms.myLayers=this.wms.myLayers.truncate(this.wms.myLayers.length-5,"")}}this.colorBlindMode=a};CRLayerManager.prototype.reset=function(){this.wms.myBaseURL=this.SIMurl+this.NORMAL_MAPFILE+this.MAPSERVER_PARAMS;this.wms.myLayers=this.NORMAL_LAYER+(this.colorBlindMode?"_dalt":"")};CRLayerManager.prototype.hide=function(){if(this.added){this.crOverlay.hide()}};CRLayerManager.prototype.show=function(){if(!this.added){this.map.addOverlay(this.crOverlay);this.added=true}else{this.crOverlay.show()}};CRLayerManager.prototype.refresh=function(){if(this.crOverlay){this.crOverlay.refresh()}};CRLayerManager.prototype.load=function(b,a,c){if(this.crOverlay){this.map.removeOverlay(this.crOverlay)}this.wms.myBaseURL=this.SIMurl+b+this.MAPSERVER_PARAMS;this.wms.myLayers=a+(this.colorBlindMode?"_dalt":"");if(c){this.map.addOverlay(this.crOverlay)}};function PoiType(e,c,g,h,d,b,f,j,a){this.code=c;this.cbId=g;this.label=h;this.limitZoom=d;this.center=b;this.baseIcon=f;this.createMarkerFunction=j;this.opts=a;this.busy=false;this.lastload=null;this.active=false;this.displayed=false;this.markers=new Hash();this.mm=new MarkerManager(e.map);this.bounds=new GLatLngBounds(e.map.getCenter(),e.map.getCenter())}function Pois(a,e){this.map=a;this.img=$("pois_img");this.poiTypes=new Hash();var d=new GIcon();d.shadow="";d.iconSize=new GSize(16,16);d.iconAnchor=new GPoint(8,8);d.infoWindowAnchor=new GPoint(8,8);var b=new GIcon();b.iconSize=new GSize(32,48);b.image="img/pois/velos/bike_sign.png";b.shadow="img/pois/velos/bike_sign_shadow.png";b.shadowSize=new GSize(57,48);b.iconAnchor=new GPoint(16,48);b.infoWindowAnchor=new GPoint(16,48);var h=new Hash();h.set(36,{name:"Paris",brand:"Vélib'",bounds:new GLatLngBounds(new GLatLng(48.8,2.2),new GLatLng(48.903,2.47)),icon:new GIcon(d,"img/pois/velos/bike36_16.png")});h.set(78,{name:"Lyon",brand:"Vélo'V",bounds:new GLatLngBounds(new GLatLng(45.705,4.772),new GLatLng(45.803,4.9685)),icon:new GIcon(d,"img/pois/velos/bike78_16.png")});h.set(79,{name:"Marseille",brand:"le vélo",bounds:new GLatLngBounds(new GLatLng(43.2568,5.3215),new GLatLng(43.3268,5.432)),icon:new GIcon(d,"img/pois/velos/bike79_16.png")});h.set(80,{name:"Toulouse",brand:"Vélô",bounds:new GLatLngBounds(new GLatLng(43.45,1.3),new GLatLng(43.75,1.52)),icon:new GIcon(d,"img/pois/velos/bike80_16.png")});this.poiTypes.set(4,new PoiType(this,4,"velo_cb","Vélib'",14,new GLatLng(48.85681,2.33734),d,function(o,p){var m=h.get(p.src);var n=new GMarker(new GLatLng(parseFloat(p.lat),parseFloat(p.lng)),{icon:m.icon,title:p.name});n.bindInfoWindowHtml('<div class="pointDetail velibDetail"><img src="img/pois/velos/bike'+p.src+'_28.png" class="detailIcon" alt="v"/><h3>'+p.name+'</h3><div class="detailContent"><ul><li>Adresse : <span class="detail-value">'+p.address+'</span></li></ul><p class="source">Source : '+m.brand+" - "+m.name+"</p></div></div>",{maxWidth:250});return n},{zones:h,signIcon:b,zoneMode:false,zoneCenters:[]}));var j=new GIcon();j.shadow="";j.iconSize=new GSize(16,19);j.iconAnchor=new GPoint(8,10);j.infoWindowAnchor=new GPoint(8,9);var g=new GIcon(j,"img/pois/radars/radar_feu.png"),k=new GIcon(j,"img/pois/radars/radar_vitesse.png");this.poiTypes.set(5,new PoiType(this,5,"radar_cb","Radar",10,null,j,function(o,p){var n=(p.type_radar=="A")?g:k;var m=new GMarker(new GLatLng(parseFloat(p.lat),parseFloat(p.lng)),{icon:n});GEvent.addListener(m,"click",function(){o.getPoiDetails(p.type,p.id,function(q){var r=GEvent.addListener(o.map,"infowindowopen",function(){displayRadarDirection(m,q);GEvent.removeListener(r)});m.openInfoWindowHtml(buildRadarInfoWindowContent(q))})});return m}));var c=new GIcon();c.shadow="";c.iconSize=new GSize(16,16);c.image="img/pois/carbeo/carbeo.png";c.iconAnchor=new GPoint(8,8);c.infoWindowAnchor=new GPoint(8,8);this.poiTypes.set(7,new PoiType(this,7,"station_cb","Station service",12,null,c,function(o,p){var n=(p.enseigne!=""&&p.enseigne!="Divers")?p.enseigne:"";if(p.name!=""){n+=" "+p.name}var m=new GMarker(new GLatLng(parseFloat(p.lat),parseFloat(p.lng)),{icon:this.baseIcon,title:n});GEvent.addListener(m,"click",function(){o.getPoiDetails(p.type,p.id,function(q){m.openInfoWindowHtml(buildFuelStationInfoWindowContent(q))})});return m}));var l=new GIcon();l.shadow="";l.iconSize=new GSize(22,22);l.image="img/pois/webcams/webcam.png";l.iconAnchor=new GPoint(11,11);l.infoWindowAnchor=new GPoint(11,11);this.poiTypes.set(8,new PoiType(this,8,"webcam_cb","Webcams",12,new GLatLng(48.85681,2.33734),l,function(n,o){var m=new GMarker(new GLatLng(parseFloat(o.lat),parseFloat(o.lng)),{icon:this.baseIcon,title:o.name});GEvent.addListener(m,"click",function(){n.map.openInfoWindow(m.getLatLng(),new Element("div",{"class":"pointDetail"}).insert(new Element("img",{src:"img/pois/webcams/webcam.png","class":"detailIcon",alt:"Webcam"})).insert("<h3>Webcam "+o.name+"</h3>").insert(new Element("div",{"class":"detailContent"}).insert('<p style="text-align:center"><img style="margin-bottom:10px" src="http://v-traficweb.rapidcity.fr/getimg.php?n='+o.id+"&anticache="+Math.floor((new Date()).valueOf()/60000)+'" width="320" height="213" alt="'+o.name+'"/></p>').insert("<p class='source'>Information fournie par <a target='_blank' href='http://www.rapidcity.fr'>RapidCity</a></p>")),{maxWidth:340,onOpenFn:function(){drawWebcamFov(m.getLatLng(),o)},onCloseFn:clearWebcamFov})});return m}));var f=new GIcon();f.shadow="";f.iconSize=new GSize(13,13);f.image="img/pois/neopark/parking.png";f.iconAnchor=new GPoint(7,7);f.infoWindowAnchor=new GPoint(7,7);this.poiTypes.set(9,new PoiType(this,9,"parking_cb","Parkings (new)",12,null,f,function(n,o){var m=new GMarker(new GLatLng(parseFloat(o.lat),parseFloat(o.lng)),{icon:this.baseIcon,title:o.name});GEvent.addListener(m,"click",function(){n.getPoiDetails(o.type,o.id,function(p){m.openInfoWindowTabsHtml(buildParkingInfoWindowContent(p),{maxWidth:350})})});return m}));this.poiTypes.each(function(n){var m=$(n.value.cbId);if(m){m.checked=false;GEvent.addDomListener(m,"click",function(){this.toggle(n.value,m)}.bind(this))}}.bind(this));GEvent.addListener(a,"moveend",function(){this.viewChanged()}.bind(this));this.setState(e)}Pois.prototype.getPoiDetails=function(b,d,c){var a="proxy.aspx?mod=poi_details&id="+d+"&type="+b;GDownloadUrl(a,function(e,f){if(f!=200){alert("Couldn't get poi_details. Error : "+f);return}if(Object.isFunction(c)){c(e.evalJSON())}})};Pois.prototype.setState=function(d){if(Object.isUndefined(d)){return}if(!Object.isUndefined(d.poi)){var a=d.poi.split("|");var b;for(var c=0;c<a.length;c++){b=this.poiTypes.get(a[c]);if(!Object.isUndefined(b)){$(b.cbId).checked=true;this.toggle(b,$(b.cbId))}}}};Pois.prototype.getState=function(){var a="";this.poiTypes.each(function(b){if(b.value.active){a+=b.value.code+"|"}});return(a=="")?"":"poi="+a};Pois.prototype.viewChanged=function(){this.poiTypes.each(function(a){if(a.value.active){this.load(a.value,true)}}.bind(this))};Pois.prototype.busy=function(a){a.busy=true;this.img.setAttribute("src","img/ajax-loader.gif");GEvent.trigger(this,"loading",a.code)};Pois.prototype.unbusy=function(a){a.busy=false;GEvent.trigger(this,"loadingfinished",a.code);this.poiTypes.each(function(b){if(b.value.busy){return}});this.img.setAttribute("src","img/POIS.gif")};Pois.prototype.load=function(poiType,show){var mapBounds=this.map.getBounds();var markerManager=poiType.mm;var zoomToggle=$(poiType.cbId+"_zoom");if(poiType.code==4){if(this.map.getZoom()<poiType.limitZoom){if(!poiType.opts.zoneMode){if(poiType.opts.zoneCenters.length==0){var marker;poiType.opts.zones.each(function(pair){marker=new GMarker(pair.value.bounds.getCenter(),{icon:poiType.opts.signIcon,title:pair.value.name+" - "+pair.value.brand});GEvent.addListener(marker,"click",function(){this.map.setCenter(pair.value.bounds.getCenter(),poiType.limitZoom)}.bind(this));poiType.opts.zoneCenters.push(marker)}.bind(this))}for(var i=0;i<poiType.opts.zoneCenters.length;i++){this.map.addOverlay(poiType.opts.zoneCenters[i])}poiType.opts.zoneMode=true}return}else{if(poiType.opts.zoneMode){for(var i=0;i<poiType.opts.zoneCenters.length;i++){this.map.removeOverlay(poiType.opts.zoneCenters[i])}poiType.opts.zoneMode=false}}}else{if(this.map.getZoom()<poiType.limitZoom){if(zoomToggle){zoomToggle.style.display="inline"}GEvent.addDomListener(zoomToggle,"click",function(){if(poiType.center==null){this.map.setZoom(poiType.limitZoom)}else{this.map.setCenter(poiType.center,poiType.limitZoom)}}.bind(this));return}else{if(zoomToggle){GEvent.clearInstanceListeners(zoomToggle)}}if(zoomToggle){zoomToggle.style.display="none"}if(poiType.bounds.containsBounds(mapBounds)){if(!poiType.displayed){markerManager.addMarkers(poiType.markers.values(),poiType.limitZoom);markerManager.refresh();poiType.displayed=true}this.unbusy(poiType);return}}var sw=mapBounds.getSouthWest();var ne=mapBounds.getNorthEast();var width=ne.lat()-sw.lat();var height=ne.lng()-sw.lng();var newsw=new GLatLng(sw.lat()-width,sw.lng()-height);var newne=new GLatLng(ne.lat()+width,ne.lng()+height);var extBounds=new GLatLngBounds(newsw,newne);var box=newsw.lat()+","+newsw.lng()+","+newne.lat()+","+newne.lng();var url="proxy.aspx?mod=pois&bbox="+box+"&type="+poiType.code;GDownloadUrl(url,function(json,code){if(code!=200){alert('Couldn\'t get "pois.json": erreur '+code)}else{var allPois=eval(json);if(allPois){var marker;var poi;for(var i=0,l=allPois.length;i<l;i++){poi=allPois[i];if(poiType.markers.get("id_"+poi.id)==null){marker=poiType.createMarkerFunction(this,poi);poiType.markers.set("id_"+poi.id,marker);if(show){markerManager.addMarker(marker,poiType.limitZoom)}}poiType.displayed=true}}poiType.bounds=extBounds;this.lastload=new Date()}this.unbusy(poiType)}.bind(this))};Pois.prototype.hide=function(c){var d;for(var b=0;b<c.length;b++){d=c[b];this.busy(d);d.mm.clearMarkers();if(d.code==4&&d.opts.zoneMode){for(var a=0;a<d.opts.zoneCenters.length;a++){this.map.removeOverlay(d.opts.zoneCenters[a])}d.opts.zoneMode=false}d.displayed=false;this.unbusy(d)}};Pois.prototype.reload=function(){this.poiTypes.each(function(b){var a=b.value;if(a.active&&!a.busy){if(a.lastload!=null){this.busy(a);this.hide([a]);this.load(a,$(a.cbId).checked)}}else{a.lastload=null}}.bind(this))};Pois.prototype.toggle=function(b,a){if(a.checked){this.load(b,true);b.active=true}else{if($(b.cbId+"_zoom")){$(b.cbId+"_zoom").style.display="none"}this.map.closeInfoWindow();this.hide([b]);b.active=false}};var webcamFov=null;function drawWebcamFov(h,b){try{var a=50;var l=map.getZoom();var k=G_NORMAL_MAP.getProjection();var e=k.fromLatLngToPixel(h,l);var d=(450-b.orientation)%360;var g=(d+30)*Math.PI/180,f=(d-30)*Math.PI/180;var m=new GPoint(e.x+a*Math.cos(g),e.y-a*Math.sin(g)),j=new GPoint(e.x+a*Math.cos(f),e.y-a*Math.sin(f));webcamFov=new GPolygon([k.fromPixelToLatLng(m,l),k.fromPixelToLatLng(e,l),k.fromPixelToLatLng(j,l)],"#25608a",1,0.8,"#25608a",0.5,{clickable:false});map.addOverlay(webcamFov)}catch(c){}}function clearWebcamFov(){if(webcamFov!=null){map.removeOverlay(webcamFov)}}var _carbNames={sp98:"SP98",sp95:"SP95",goPlus:"Gasoil+",go:"Gasoil",gpl:"GPL",e85:"E85"};function buildFuelPriceTable(b){function a(e){var d=new Date(e.substr(0,4),(e.substr(5,2)-1),e.substr(8,2),e.substr(11,2),e.substr(14,2),e.substr(17,2));return d.getDate()+"/"+(d.getMonth()+1)+"/"+d.getFullYear()}var c=['<div class="fuel_prices"><table><thead><tr><th>Carburant</th><th>Prix</th></tr></thead><tbody>'];b.prices.each(function(e,d){c.push("<tr><td>"+_carbNames[e.carb]+"</td>"+(e.prix?("<td>"+(e.prix+" &euro;/L")+'&nbsp;<img src="img/pois/carbeo/euro_'+e.note+'.png"/></td>'):("<td>Non distribu&eacute;</td>"))+"</tr>")});c.push('</tbody></table><div style="text-align:center;font-size:0.8em">Prix indicatifs au '+a(b.maj)+"</div></div>");return c.join("")}function buildFuelStationInfoWindowContent(b){var a="";if(b.enseigne!=""&&b.enseigne!="Divers"){a=b.enseigne}if(b.name!=""){a+=" "+b.name}function d(e,f){return(f)?"<li>"+e+' : <span class="detail-value">'+f+"</span></li>":""}var c=[];c.push('<div class="pointDetail fuelDetail"><img id="carbLogo" alt="Station service" src=img/pois/carbeo/logosmarques/'+b.enseigne.replace(" ","_","gi")+'_Fr.jpg" class="detailIcon" onerror="this.src=\'img/pois/carbeo/logosmarques/jerican_Fr.jpg\'"/>');c.push("<h3>Station "+a);if(b.note){c.push('<br/><img src="img/pois/carbeo/euro_'+b.note+'.png"/>&nbsp;<span style="font-weight:normal;font-size:0.7em">'+(b.note<0?"Peu ch&egrave;re":(b.note>0?"Ch&egrave;re":"Moyenne"))+"</span>")}c.push('</h3><div class="detailContent">');c.push(buildFuelPriceTable(b));c.push(b.adresse+((b.adresse_comp&&b.adresse)?"<br/>":"")+b.adresse_comp+"<br/>"+b.cp+" "+b.ville+"<br/>&nbsp;</br><ul>");c.push(d("Tel.",b.tel));c.push(d("24h/24",b.ouvert2424));c.push(d("7j/7",b.ouvert77));c.push(d("Boutique",b.boutique));c.push(d("Station de gonflage",b.gonflage));c.push(d("Station de lavage",b.lavage));c.push(d("Borne électrique",b.elec));c.push('</ul><p class="source">Information fournie par <a href="http://www.carbeo.com/" target="_blank">Carbeo</a></p></div></div>');return(c.join(""))}function buildRadarInfoWindowContent(b){var a;var c='<div class="pointDetail radarDetail"><img alt="Radar" src="img/pois/radars/radar_'+((b.type_radar=="A")?"feu":"vitesse")+'.png" class="detailIcon" /><h3>'+b.address+'</h3><div class="detailContent">';c+='<div id="radarMiniMap" style="height:150px;border:1px solid black;margin-bottom:15px;"></div>';c+='<ul><li>Type : <span class="detail-value">'+((b.type_radar=="A")?"Radar de feu":"Radar de vitesse")+"</li>";if(b.type_radar!="A"){c+='<li>Vitesse contrôlée : <span class="detail-value" style="font-weight:bold">'+b.vitesse+" km/h</span></li>"}if(b.angle!=""){c+="<li>En direction "+angleToDirection(parseInt(b.angle)+180);if(b.sens!="/"&&b.sens==1){c+=" et "+angleToDirection(parseInt(b.angle))}c+="</li>"}c+='</ul><p class="source">Information fournie par &copy; <a title="La source européenne n°1 des radars pour votre navigation mobile" target="_blank" href="http://www.scdb.info/fr">SCDB.info</a></p></div></div>';return c}function displayRadarDirection(n,r){var m=new GMap2($("radarMiniMap"),{mapTypes:[G_NORMAL_MAP]});var j=new GMarker(n.getLatLng(),{icon:n.getIcon()});m.setCenter(j.getLatLng(),16);m.addControl(new GSmallMapControl());if(r.angle!=""){var b=m.getZoom();var v=50,t=10;var s=G_NORMAL_MAP.getProjection();var c=s.fromLatLngToPixel(j.getLatLng(),b);var g=(450-r.angle)%360;var u=g*Math.PI/180;var l=Math.cos(u);var q=Math.sin(u);var k=new GPoint(c.x+v*l,c.y-v*q);var h=new GPoint(c.x-v*l,c.y+v*q);var d=(g+30)*Math.PI/180,f=(g-30)*Math.PI/180;var a=new GPoint(h.x+t*Math.cos(d),h.y-t*Math.sin(d)),w=new GPoint(h.x+t*Math.cos(f),h.y-t*Math.sin(f));var e=new GPolyline([s.fromPixelToLatLng(a,b),s.fromPixelToLatLng(h,b),s.fromPixelToLatLng(k,b),s.fromPixelToLatLng(h,b),s.fromPixelToLatLng(w,b)],"#000000",6,1);m.addOverlay(e);if(r.sens!="/"&&r.sens==1){var p=new GPoint(k.x-t*Math.cos(d),k.y+t*Math.sin(d)),o=new GPoint(k.x-t*Math.cos(f),k.y+t*Math.sin(f));m.addOverlay(new GPolyline([s.fromPixelToLatLng(p,b),s.fromPixelToLatLng(k,b),s.fromPixelToLatLng(o,b)],"#000000",6,1))}}m.addOverlay(j)}var radarAngleToDir=["du nord","du nord-est","de l'est","du sud-est","du sud","du sud-ouest","de l'ouest","du nord-ouest","du nord"];function angleToDirection(a){return(radarAngleToDir[Math.round((a%360)/45)])}var neopark_icon_path="img/pois/neopark/";var neoparkRef={parkTypes:{a:{icon:"parking_couvert.gif",label:"Parking couvert"},b:{icon:"parking_ext.gif",label:"Parking extérieur"},c:{icon:"parking_free.gif",label:"Parking gratuit"},d:{icon:"parc_relais.gif",label:"Parc relais"}},vehicleTypes:{a:{icon:"parking_moto.gif",label:"motos"},b:{icon:"voiture.gif",label:"voitures"},c:{icon:"utilitaire.gif",label:"utilitaires"},d:{icon:"parking_bus.gif",label:"bus"},e:{icon:"camion.gif",label:"camions"},f:{icon:"camping_car.gif",label:"camping-cars"}},services:{a:{icon:"station_service.gif",label:"Station service"},b:{icon:"parking_pmr.gif",label:"Accès handicapé"},c:{icon:"parking_recharge-electrique.gif",label:"Recharge électrique"}},comfort:{b:{icon:"ws.gif",label:"Toilettes"},c:{icon:"roues.gif",label:"Zone 2 roues"}},security:{a:{icon:"video.gif",label:"Vidéo-surveillance"}},payment:{a:{icon:"mastercard.gif",label:"Mastercard"},b:{icon:"visa.gif",label:"Visa"},c:{icon:"cheques.gif",label:"Chèque"},d:{icon:"espece.gif",label:"Espèces"},e:{icon:"american_exp.gif",label:"American Express"},f:{icon:"m.gif",label:"Monéo"},g:{icon:"parking_gr.gif",label:"Total GR"},h:{icon:"liber-t.gif",label:"Liber-T card"}}};function buildParkingInfoWindowContent(c){var j=new Array();var h;if(c.park_type!=null){var e=neoparkRef.parkTypes[c.park_type.charAt(0)];h='<img src="'+neopark_icon_path+e.icon+'" alt="" title="'+e.label+'" class="detailIcon" />'}else{h='<img src="img/pois/neopark/picto.gif" alt="" title="Parking" class="detailIcon" />'}var g='<div class="pointDetail">'+h+"<h3>"+c.name+(c.enseigne!=""?(" - "+c.enseigne):"")+'</h3><div class="detailContent"><div class="scrollableDetail">';var k='</div><p class="source">Information fournie par <a href="http://www.neopark.fr" target="_blank">Neopark</a></p></div></div>';var d;if(c.avail1!=null){if(c.avail1=="a"){d='<span class="green">Libre</span>&nbsp;<img alt="" style="vertical-align:bottom" src="'+neopark_icon_path+'parking_ouvert.gif" />'}else{d='<span class="orange">Complet</span>&nbsp;<img alt="" style="vertical-align:bottom" src="'+neopark_icon_path+'parking_complet.gif" />'}}else{if(c.status!=null&&c.status!=""){if(c.status=="a"){d='<span class="green">Libre</span>&nbsp;<img alt="" style="vertical-align:bottom" src="'+neopark_icon_path+'parking_ouvert.gif" />'}else{d='<span class="red">Fermé</span>&nbsp;<img alt="" style="vertical-align:bottom" src="'+neopark_icon_path+'parking_ferme.gif" />'}}else{d='<span class="grey">Disponibilité inconnue</span>&nbsp;<img alt="" style="vertical-align:bottom" src="'+neopark_icon_path+'parking-disponibilite-inconnu.gif" />'}}var m=g;if(c.rate!=null){m+='<div  class="fuel_prices"><table><thead><tr><th>Durée</th><th>Tarif</th></tr></thead><tbody>';var l=c.rate.split(" |");l.each(function(p,o){var n=p.split(" H ");m+="<tr><td>"+n[0]+"h</td><td>"+n[1]+"</td></tr>"});m+='</tbody></table><div style="text-align: center; font-size: 0.8em;">Tarifs horaires</div></div>'}m+='<p style="">'+c.address+"<br/>"+c.post_code+" "+c.city+"</p>"+d;m+="<ul>";var a="",f;function b(q,r){var p="";if(q!=null){var n=q.split(",");var o;n.each(function(t,s){if(t!=""&&(o=r[t])!=null){p+='<img src="'+neopark_icon_path+o.icon+'" alt="'+o.label+'" title="'+o.label+'"/>'}})}return p}if(c.max_high!=null){a+='<li>Hauteur max. : <span class="detail-value">'+c.max_high+" m</span></li>"}if((f=b(c.vehicle_cat,neoparkRef.vehicleTypes))!=""){a+="<li>Véhicules autorisés : <br/>&nbsp;&nbsp;"+f+"</li>"}if((f=b(c.payment,neoparkRef.payment))!=""){a+="<li>Moyens de paiement : <br/>&nbsp;&nbsp;"+f+"</li>"}if((f=b(c.services,neoparkRef.services))!=""){a+="<li>Services : <br/>&nbsp;&nbsp;"+f+"</li>"}if((f=b(c.security,neoparkRef.security))!=""){a+="<li>Sécurité : <br/>&nbsp;&nbsp;"+f+"</li>"}if((f=b(c.comfort,neoparkRef.comfort))!=""){a+="<li>Confort : <br/>&nbsp;&nbsp;"+f+"</li>"}if(c.phone!=null){a+='<li>N° de téléphone : <span class="detail-value">'+c.phone+"</span></li>"}m+=a+"</ul>"+k;j.push(new GInfoWindowTab("Infos",m));return j}function buildParkInfoWindowContent(e){var b=new Array();var c;switch(e.etat){case 1:c='<span class="red">Complet</span>&nbsp;<img alt="Parking complet" src="img/pois/parkings/flag_red.gif" />';break;case 5:c='<span class="green">Libre</span>&nbsp;<img alt="Parking libre" src="img/pois/parkings/flag_green.gif" />';break;case 7:c='<span class="black">Fermé</span>&nbsp;<img alt="Parking fermé" src="img/pois/parkings/flag_black.gif" />';break;default:c='<span class="grey">Pas d\'information disponible</span>&nbsp;<img alt="Pas d\'information disponible" src="img/pois/parkings/flag_grey.gif" />'}var d='<div class="pointDetail"><img alt="Parking" src="img/pois/parkings/parking.gif" class="detailIcon" />';d+="<h3>Parking "+e.nom+'</h3><div class="detailContent">'+c;d+='<ul><li>Nb. de places total : <span class="detail-value">'+e.Nb_Place_Tot+"</span></li>";if(e.Haut_max!=null){d+='<li>Hauteur max. : <span class="detail-value">'+e.Haut_Max+" m</span></li>"}if(e.Acces1!=null){d+='<li>Accès : <span class="detail-value">'+e.Acces1;if(e.Acces2!=null){d+=" / "+e.Acces2}}d+='</span></li></ul><p class="source">Information fournie par la FNMS</p></div></div>';b.push(new GInfoWindowTab("Infos",d));var a='<div class="pointDetail"><img alt="Parking" src="img/pois/parkings/parking.gif" class="detailIcon" />';a+="<h3>Parking "+e.nom+'</h3><div class="detailContent"><ul>';if(e.Tel1!=null){a+='<li>N° de téléphone : <span class="detail-value">'+e.Tel1+"</span></li>"}if(e.Horaires!=null){a+='<li>Horaires d\'ouverture : <span class="detail-value">'+e.Horaires+"</span></li>"}if(e.Acc_Hand!=null){a+='<li>Accès handicapés : <span class="detail-value">'+(e.Acc_Hand?"oui":"non")+"</span></li>"}if(e.Acc_GPL!=null){a+='<li>Accessibilité aux véhicules GPL : <span class="detail-value">'+(e.Acc_GPL?"oui":"non")+"</span></li>"}a+='</ul><p class="source">Information fournie par la FNMS</p></div></div>';b.push(new GInfoWindowTab("Détails",a));return b}function Events(b,a){this.map=b;this.img=$("events_img");this.bbox="-19.66552734375,34.009537632881646,23.44482421875,59.6401656011041";this.markerBulkSize=25;this.markerBulkTimeout=10;this.busyProc=0;this.etg=new Hash();this.etg.set("A",{cbId:"evt_A",statString:"Accident",types:"A",active:false,markers:null});this.etg.set("B",{cbId:"evt_B",statString:"Bouchon",types:"OEB",active:false,markers:null});this.etg.set("F",{cbId:"evt_F",statString:"Fermeture",types:"F",active:false,markers:null});this.etg.set("R",{cbId:"evt_R",statString:"Retrecissement",types:"R",active:false,markers:null});this.etg.set("T",{cbId:"evt_T",statString:"Travaux",types:"T",active:false,markers:null});this.etg.set("D",{cbId:"evt_D",statString:"Divers",types:"CMSD",active:false,markers:null});this.eventTypes=new Object();this.eventTypes.A={label:"Accident",icon:"accident.png",group:this.etg.get("A")};this.eventTypes.O={label:"Trafic en accordéon",icon:"bouchon2.png",group:this.etg.get("B")};this.eventTypes.E={label:"Trafic ralenti",icon:"bouchon1.png",group:this.etg.get("B")};this.eventTypes.B={label:"Bouchon",icon:"bouchon.png",group:this.etg.get("B")};this.eventTypes.F={label:"Fermeture de voie",icon:"fermeture.png",group:this.etg.get("F")};this.eventTypes.R={label:"Rétrécissement",icon:"retrecissement.png",group:this.etg.get("R")};this.eventTypes.T={label:"Travaux",icon:"travaux.png",group:this.etg.get("T")};this.eventTypes.C={label:"Conditions météo",icon:"meteo.png",group:this.etg.get("D")};this.eventTypes.M={label:"Marché",icon:"marche.png",group:this.etg.get("D")};this.eventTypes.S={label:"Manifestation",icon:"manifestation.png",group:this.etg.get("D")};this.eventTypes.D={label:"Divers",icon:"divers.png",group:this.etg.get("D")};this.baseIcon=new GIcon();this.baseIcon.shadow="";this.baseIcon.iconSize=new GSize(28,28);this.baseIcon.shadowSize=new GSize(0,0);this.baseIcon.iconAnchor=new GPoint(14,14);this.baseIcon.infoWindowAnchor=new GPoint(14,14);this.baseIcon.infoShadowAnchor=new GPoint(0,0);this.iconPath="img/events/";this.load(this.etg.values(),function(){this.setState(a)}.bind(this));this.etg.each(function(e){var c=$(e.value.cbId);c.checked=false;GEvent.addDomListener(c,"click",function(){this.toggle(e.value)}.bind(this));var d=$(c.parentNode);d.observe("mousemove",function(f){this.tooltip(d,e.value,f,true)}.bind(this));d.observe("mouseout",function(f){this.tooltip(d,e.value,f,false)}.bind(this))}.bind(this));this.allSwitch=$("evt_X");GEvent.addDomListener(this.allSwitch,"click",function(){this.toggleAll()}.bind(this))}Events.prototype.setState=function(c){if(Object.isUndefined(c)){return}var a;if(a=c.evt){for(var b=0;b<a.length;b++){if(!Object.isUndefined(typeGroup=this.etg.get(a.charAt(b)))&&!typeGroup.active){$(typeGroup.cbId).checked=true;typeGroup.active=true;this.show(typeGroup)}}}};Events.prototype.getState=function(){var a="";this.etg.each(function(b){if(b.value.active){a+=b.key}});return(a=="")?"":"evt="+a};Events.prototype.tooltip=function(b,e,c,d){var a=$("event_tooltip");if(!a){a=new Element("div",{"class":"tooltip",id:"event_tooltip"});document.body.appendChild(a)}a.update("<strong>"+e.markers.length+"</strong> sur la France");if(d){if(!a.visible()){a.setStyle({left:c.pointerX()+10+"px",top:c.pointerY()+10+"px"})}a.show()}else{a.hide()}};Events.prototype.toggleAll=function(){if(this.allSwitch.checked){_logPageview("/module/events/All");this.etg.each(function(a){if(!(typeGroup=a.value).active){typeGroup.active=$(typeGroup.cbId).checked=true;this.show(typeGroup)}}.bind(this))}else{this.map.closeInfoWindow();this.etg.each(function(a){if((typeGroup=a.value).active){typeGroup.active=$(typeGroup.cbId).checked=false;this.hide(typeGroup,true)}}.bind(this))}};Events.prototype.toggle=function(a){if(a.active=!a.active){_logPageview("/module/events/"+a.statString);this.show(a)}else{this.allSwitch.checked=false;this.map.closeInfoWindow();this.hide(a,true)}};Events.prototype.show=function(a){this.busy(a);this.toggleMarkers(true,a,0)};Events.prototype.hide=function(d,c){this.busy(d);if(c){this.toggleMarkers(false,d,0)}else{var e=d.markers;for(var b=0,a=e.length;b<a;b++){this.map.removeOverlay(e[b])}this.unbusy(d)}};Events.prototype.busy=function(a){GEvent.trigger(this,"loading",a.types);this.busyProc++;if(this.busyProc>0){this.img.setAttribute("src","img/ajax-loader.gif")}};Events.prototype.unbusy=function(a){GEvent.trigger(this,"loadingfinished",a.types);this.busyProc--;if(this.busyProc==0){this.img.setAttribute("src","img/EVENEMENT.gif")}};Events.prototype.load=function(typeGroups,callback){var typeGroup;var eventTypeCodes="";for(var i=0;i<typeGroups.length;i++){typeGroup=typeGroups[i];typeGroup.markers=new Array();eventTypeCodes+=typeGroup.types}var url="proxy.aspx?mod=events&box="+this.bbox+"&evts="+eventTypeCodes;GDownloadUrl(url,function(json,code){if(code!=200){alert("Impossible de récupérer les données évènements ("+code+")");return}var allevents=eval(json);var event;for(var i=0,l=allevents.length;i<l;i++){event=allevents[i];typeGroup=this.eventTypes[event.type].group;typeGroup.markers.push(this.createMarker(event,this.eventTypes[event.type]))}if(Object.isFunction(callback)){callback()}}.bind(this))};Events.prototype.toggleMarkers=function(d,b,f){if((d&&!b.active)||(!d&&b.active)){this.unbusy(b);return}var c,a;var e=b.markers;for(c=0,a=e.length;((f+c)<a&&c<this.markerBulkSize);c++){if(d){this.map.addOverlay(e[f+c])}else{this.map.removeOverlay(e[f+c])}}if((f+c)!=a){setTimeout(function(){this.toggleMarkers(d,b,f+c)}.bind(this),this.markerBulkTimeout)}else{this.unbusy(b)}};Events.prototype.reload=function(b){this.map.closeInfoWindow();var a=this.etg.values();for(var c=0;c<a.length;c++){this.hide(a[c],false)}this.load(this.etg.values(),function(){for(var d=0;d<a.length;d++){if(a[d].active){this.show(a[d])}}}.bind(this))};Events.prototype.createMarker=function(d,c){var b=new GIcon(this.baseIcon);b.image=this.iconPath+c.icon;var a=new GMarker(new GLatLng(parseFloat(d.lat),parseFloat(d.lng)),{icon:b,title:d.desc});GEvent.addListener(a,"click",function(){a.openInfoWindowHtml(this.buildEventInfoWindowContent(d,c,a))}.bind(this));return a};Events.prototype.buildEventInfoWindowContent=function(b,e,a){var d=b.desc.charAt(0).toUpperCase()+b.desc.substr(1);if(d.charAt(d.length-1)!="."){d+="."}var c='<img alt="'+e.label+'" src="'+a.getIcon().image+'" class="detailIcon" />';return'<div class="pointDetail eventDetail">'+c+"<h3>"+e.label+'</h3><div class="detailContent"><p>'+d+'</p><p class="eventDate">D&eacute;but : '+b.date+"</p></div></div>"};function MeteoFrance(a,b){this.map=a;this.img=$("meteo_img");this.pictoPath="img/meteo/pictos60/";this.closestMinZoomLevel=10;this.updatePeriod=30;this.minUpdateDistance=3000;this.days=["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"];this.windirs=["sud","sud-sud-ouest","sud-ouest","sud-ouest-ouest","ouest","nord-ouest-ouest","nord-ouest","nord-nord-ouest","nord","nord-nord-est","nord-est","nord-est-est","est","sud-est-est","sud-est","sud-sud-est"];this.displayLevelMapping=[0,8,10];this.markerManager=new MarkerManager(this.map);this.markers=[new Hash(),new Hash(),new Hash()];this.newMarkers=[new Hash(),new Hash(),new Hash()];this.bounds=new GLatLngBounds(this.map.getCenter(),this.map.getCenter());this.displayLevel=0;this.displayed=false;this.lastClosest=null;GEvent.addListener(a,"moveend",function(){this.viewChanged()}.bind(this));this.templatePicto=new GIcon();this.templatePicto.iconSize=new GSize(90,90);this.templatePicto.iconAnchor=new GPoint(45,45);this.templatePicto.infoWindowAnchor=new GPoint(45,45);this.templatePicto.shadow="";this.templatePicto.shadowSize=new GSize(0,0);if(Object.isUndefined(b)){this.setState(b)}}MeteoFrance.prototype.setState=function(a){if(Object.isUndefined(a)){return}if(!Object.isUndefined(a.mf)&&a.mf==1){$("meteo_overlay_toggle").checked=true;this.toggleOverlay(true)}};MeteoFrance.prototype.getState=function(){return($("meteo_overlay_toggle").checked)?"mf=1":""};MeteoFrance.prototype.showload=function(){this.img.setAttribute("src","img/ajax-loader.gif")};MeteoFrance.prototype.hideload=function(){this.img.setAttribute("src","img/METEO.gif")};MeteoFrance.prototype.reload=function(){this.getClosest();if($("meteo_overlay_toggle").checked){this.removeOverlay();this.bounds=new GLatLngBounds(this.map.getCenter(),this.map.getCenter());this.loadOverlay()}};MeteoFrance.prototype.toggleOverlay=function(a){if(a){this.loadOverlay()}else{this.removeOverlay()}};MeteoFrance.prototype.viewChanged=function(){this.getClosest();if($("meteo_overlay_toggle").checked){this.loadOverlay()}};MeteoFrance.prototype.loadOverlay=function(){var f=this;var j=this.map.getBounds();var d=this.map.getZoom();var h=(d<this.displayLevelMapping[1])?0:((d<this.displayLevelMapping[2])?1:2);GEvent.trigger(this,"loading",null);if(this.bounds.containsBounds(j)&&h<=this.displayLevel){if(!this.displayed){this.displayed=true;this.markerManager.addMarkers(this.markers[0].values(),this.displayLevelMapping[0]);this.markerManager.addMarkers(this.markers[1].values(),this.displayLevelMapping[1]);this.markerManager.addMarkers(this.markers[2].values(),this.displayLevelMapping[2]);this.markerManager.refresh()}GEvent.trigger(f,"loadingfinished",null);return}var l=j.getSouthWest();var e=j.getNorthEast();var b=e.lat()-l.lat();var m=e.lng()-l.lng();var k=new GLatLng(l.lat()-b,l.lng()-m);var c=new GLatLng(e.lat()+b,e.lng()+m);this.bounds=new GLatLngBounds(k,c);var g=k.lat()+","+k.lng()+","+c.lat()+","+c.lng();var a="proxy.aspx?mod=mf_area&bbox="+g+"&lvl="+h;GDownloadUrl(a,function(o,q){if(q!=200){alert('Couldn\'t get "pois.json": erreur '+q);GEvent.trigger(f,"loadingfinished",null);return}f.displayLevel=h;try{var p=o.evalJSON();var r=p.length;var s,n;for(i=0;i<r;i++){s=p[i];n=f.cityToMarker(s);if((f.markers[s.lvl].get(""+s.id))==null){f.markerManager.addMarker(n,f.displayLevelMapping[s.lvl])}f.markers[s.lvl].set(""+s.id,n);f.displayed=true}}finally{GEvent.trigger(f,"loadingfinished",null)}})};MeteoFrance.prototype.angleToWindIcon=function(a){if(a==-1){return"img/meteo/pictos/variable.gif"}return"img/meteo/pictos/"+this.windirs[Math.round(a/22.5)%16]+".gif"};MeteoFrance.prototype.transformName=function(a){if(a.startsWith("PARIS--1ER")){return"PARIS"}return a};MeteoFrance.prototype.cityToMarker=function(h){var g=this;var c=new GIcon(this.templatePicto,"img/meteo/pictos_shades/"+h.picto+".png");c.infoWindowAnchor=new GPoint(45,10);var a=new GMarker(new GLatLng(parseFloat(h.lat),parseFloat(h.lng)),{icon:c,title:h.name});try{var d=this.parseValidityDate(h.dt);var b="<h3>"+this.transformName(h.name)+'</h3><div class="detailContent"><p style="background:#fff url('+this.pictoPath+h.picto+'.gif) no-repeat;padding-left:65px;">'+d.day+", "+d.dayMoment.toLowerCase()+"<br/>"+h.desc+"<br />Temp&eacute;rature : "+h.temp+'&deg;C<br/>Vent : <img src="'+this.angleToWindIcon(h.windir)+'" alt="vent"/> '+h.winstr+"km/h</p></div>";GEvent.addListener(a,"mouseover",function(){a.openExtInfoWindow(g.map,"ext_info_window",b,{paddingX:50})});GEvent.addListener(a,"mouseout",function(){a.closeExtInfoWindow(g.map)})}catch(f){}GEvent.addListener(a,"click",function(){g.map.panTo(this.getLatLng())});return a};MeteoFrance.prototype.removeOverlay=function(){this.displayed=false;this.markerManager.clearMarkers()};MeteoFrance.prototype.parseValidityDate=function(d){var f=new Date(d.substr(0,4),(d.substr(4,2)-1),d.substr(6,2),d.substr(8,2),d.substr(10,2));var b=f.getHours();var c,a;if(b<7){a="Nuit";c="Aujourd'hui"}else{var e=new Date();if(b<=11){a="Matin"}else{if(b<=17){a="Apr&egrave;s-midi"}else{a="Soir&eacute;e"}}c=(f.getDate()==e.getDate())?"Aujourd'hui":this.days[f.getDay()]}return{day:c,dayMoment:a}};MeteoFrance.prototype.displayDetails=function(f){$("meteo_city").innerHTML=this.transformName(f.name);var b=new Date();var c=new Date(b-b.getTime()%(60000*this.updatePeriod));$("meteo_update").innerHTML=((c.getHours()<10)?"0":"")+c.getHours()+":"+((c.getMinutes()<10)?"0":"")+c.getMinutes();var e=this;function a(h,g){var j=e.parseValidityDate(h.dt);return((g==0)?'<li class="meteo_now">':"<li>")+j.day+"<br/>"+j.dayMoment+'<br/><img src="'+e.pictoPath+h.picto+'.gif" alt="'+h.desc+'"/><br/>'+h.temp+"&deg;C</li>"}var d="";f.prev.each(function(h,g){d+=a(h,g)});$("carousel_container").innerHTML="<ul>"+d+"</ul>";this.carousel=new UI.Carousel("meteo_carousel",{container:"#carousel_container"})};MeteoFrance.prototype.getClosest=function(){if(this.map.getZoom()<this.closestMinZoomLevel){$("meteo_details").hide();return}$("meteo_details").show();var a=this.map.getCenter();if(this.lastClosest&&this.lastClosest.distanceFrom(a)<this.minUpdateDistance){return}this.showload();if(this.carousel){this.carousel.disable();this.carousel=null}this.lastClosest=a;var b="proxy.aspx?mod=mf_closest&lat="+a.lat()+"&lng="+a.lng();$("carousel_container").innerHTML="Chargement";var c=this;GDownloadUrl(b,function(d,e){if(e!=200){c.hideload();return}c.displayDetails(d.evalJSON());c.hideload()})};UI.Carousel.prototype.disable=function(){[this.previousButton,this.nextButton].each(function(a){if(!a){return}a.stopObserving("click",a.clickHandler)},this)};function Itinerary(map,crManager,crToggler){this.map=map;this.crManager=crManager;this.crToggler=crToggler;this.markers=new Array();this.imgId="parcours_img";this.validBounds=[new GLatLngBounds(new GLatLng(48.339820521006125,1.4392089843749998),new GLatLng(49.36985486907496,3.2354736328125004))];this.validZoom=9;this.prevZone=-1;this.itiDef=eval(_getItiDefs());this.select=$("tps");this.select.selectedIndex=0;GEvent.addDomListener(this.select,"change",function(){var selectedOption=this.select.options[this.select.selectedIndex];this.load(selectedOption.text,selectedOption.value);_logPageview("/module/itinerary/parcours_"+selectedOption.value)}.bind(this));this.baseIcon=new GIcon();this.baseIcon.shadow="";this.baseIcon.iconSize=new GSize(22,22);this.baseIcon.shadowSize=new GSize(0,0);this.baseIcon.iconAnchor=new GPoint(11,11);this.baseIcon.infoWindowAnchor=new GPoint(11,11);this.baseIcon.infoShadowAnchor=new GPoint(0,0);this.loaded=false;this.loading=false;this.itiId=0;this.blockOff=$("parcours_off");this.blockOn=$("parcours_on");GEvent.bind(map,"moveend",this,function(){var displayZone=this.getDisplayZone();if(displayZone==-1){if(this.itiId!=0){this.unload(true)}this.blockOn.hide();this.blockOff.show()}else{this.blockOff.hide();if(displayZone!=this.prevZone){this.fillList(displayZone)}this.blockOn.show()}})}Itinerary.prototype.fillList=function(d){var b=[];b.push('<option value="0">Sélectionnez votre parcours</option>');var a=this.itiDef[d];for(var c=0;c<a.length;c++){b.push('<option value="'+a[c].id+'" selected="selected">'+a[c].label+"</option>")}this.select.update(b.join(""));this.select.selectedIndex=0;this.prevZone=d};Itinerary.prototype.getDisplayZone=function(){if(this.map.getZoom()<this.validZoom){return -1}for(var a=0;a<this.validBounds.length;a++){if(this.validBounds[a].intersects(this.map.getBounds())){return a}}return -1};Itinerary.prototype.reload=function(){if(!this.loaded){return}GEvent.trigger(this,"loading",this.itiId);this.crManager.refresh();this.loadData()};Itinerary.prototype.loadData=function(){GDownloadUrl("proxy.aspx?mod=tp&id=2"+this.itiId,function(json,code){if(code!=200){alert("Couldn't load geom itinerary feed: error "+code);return}var paths=eval(json);var bounds=new GLatLngBounds();var points=[];var path,startPt,endPt,prevPt;var table=$("tp_details_table");var tbody=new Element("tbody");var tr;var previousStart="";for(var i=0;i<paths.length;++i){path=paths[i];bounds.extend(startPt=new GLatLng(path.start.lat,path.start.lng));bounds.extend(endPt=new GLatLng(path.end.lat,path.end.lng));if(prevPt=points.find(function(pt){return pt.coords.equals(startPt)})){prevPt.outgoing++}else{points.push({coords:startPt,outgoing:1,incoming:0,name:path.start.name})}if(prevPt=points.find(function(pt){return pt.coords.equals(endPt)})){prevPt.incoming++}else{points.push({coords:endPt,outgoing:0,incoming:1,name:path.end.name})}tr=new Element("tr").insert(new Element("td",{"class":"tp_desc"}).update(path.start.name+"<img src='img/flecheGreen.gif' alt='' style='margin:0 2px 0 4px;'/>"+path.end.name+(path.via!=""?("<span class='tp_via'>via "+path.via+"</span>"):"")));if(path.s<0){tr.insert(new Element("td",{"class":"tp_warn",colSpan:2}).update((path.s==-1)?"Tron\u00e7on bloqu\u00e9":"Pas d'information disponible"))}else{tr.insert(new Element("td",{"class":"tp_time"}).update(Math.floor(path.s/60)+"\u00a0min"));tr.insert(new Element("td",{"class":"tp_speed"}).update(Math.round(path.l*3.6/path.s)+"\u00a0km/h"))}tbody.insert(tr);previousStart=path.start.name}table.update(tbody);if(!this.loaded){$("modulePile").hide();$("tp_details").show();$("tp_title").insert(this.select)}this.map.setCenter(bounds.getCenter(),this.map.getBoundsZoomLevel(bounds));points.each(function(point){var icon=new GIcon(this.baseIcon);if((point.outgoing==point.incoming)||(point.outgoing!=0&&point.incoming!=0)){icon.image="img/tp_step.png"}else{icon.image=(point.outgoing>point.incoming)?"img/tp_start.png":"img/tp_end.png"}var marker=new GMarker(point.coords,{icon:icon,clickable:false,title:point.name});this.markers.push(marker);this.map.addOverlay(marker)}.bind(this));this.crManager.load("tp_trafic_wms.map","tp_2"+this.itiId+",cr_tp_2"+this.itiId,true);$(this.imgId).setAttribute("src","img/TEMPS.gif");this.loading=false;GEvent.trigger(this,"loadingfinished",this.itiId);this.loaded=true}.bind(this))};Itinerary.prototype.load=function(a,c){if(c==0){this.unload(true);return}if(this.loaded){this.unload(false)}if(this.select.options[this.select.selectedIndex].value!=c){for(var b=0;b<this.select.options.length;b++){if(this.select.options[b].value==c){this.select.selectedIndex=b;break}}}this.loading=true;this.crToggler.lock(true);GEvent.trigger(this,"loading",this.id);$(this.imgId).setAttribute("src","img/ajax-loader.gif");this.name=a;this.itiId=(c<10)?("0"+c):c;this.loadData()};Itinerary.prototype.unload=function(b){if(this.loaded){this.select.selectedIndex=0;this.itiId=0;if(b){this.crManager.reset();this.crToggler.lock(false);$("tp_details").hide();$("modulePile").show();$("parcours_on").insert(this.select)}var a;while((a=this.markers.shift())){this.map.removeOverlay(a)}this.loaded=false}};function Providers(a,b){this.map=a;this.container=b;if(!this.map||!this.container){return}this.providers=[{id:"VDP",name:"Ville de Paris",bounds:new GLatLngBounds(new GLatLng(48.8,2.2),new GLatLng(48.903,2.47)),minZoom:11,allLevels:false},{id:"LILLE",name:"Communauté Urbaine de Lille",bounds:new GLatLngBounds(new GLatLng(50.525,2.856),new GLatLng(50.773,3.305)),minZoom:11,allLevels:false},{id:"LYON",name:"Coraly",bounds:new GLatLngBounds(new GLatLng(45.705,4.772),new GLatLng(45.803,4.9685)),minZoom:11,allLevels:false},{id:"BRDX",name:"Communauté Urbaine de Bordeaux",bounds:new GLatLngBounds(new GLatLng(44.7611,-0.6913),new GLatLng(44.8958,-0.4879)),minZoom:11,allLevels:false},{id:"TLSE",name:"Toulouse",bounds:new GLatLngBounds(new GLatLng(43.45,1.3),new GLatLng(43.75,1.52)),minZoom:11,allLevels:false},{id:"NTES",name:"Nantes Métropole",bounds:new GLatLngBounds(new GLatLng(47.1121,-1.8319),new GLatLng(47.3421,-1.3964)),minZoom:11,allLevels:false},{id:"CG92",name:"CG des Hauts-de-Seine",bounds:new GLatLngBounds(new GLatLng(48.7991,2.1246),new GLatLng(48.9268,2.3508)),minZoom:2,allLevels:false},{id:"SIR2",name:"DIRIF",bounds:new GLatLngBounds(new GLatLng(48.4,1.8),new GLatLng(49.14,2.75)),minZoom:1,allLevels:false},{id:"GIE",name:"Autoroutes-Trafic",bounds:new GLatLngBounds(new GLatLng(42.36,-2.33),new GLatLng(51.46,8.7)),minZoom:0,allLevels:false},{id:"FCD",name:"Véhicules traceurs",bounds:new GLatLngBounds(new GLatLng(42.36,-2.33),new GLatLng(51.46,8.7)),minZoom:0,allLevels:true}];GEvent.addListener(this.map,"moveend",function(){this.viewChanged()}.bind(this))}Providers.prototype.viewChanged=function(){var b=this.map.getBounds();var d=this.map.getZoom();var a="";var c=0;var e=true;this.providers.each(function(f){if(b.intersects(f.bounds)&&d>=f.minZoom&&(f.minZoom>=c||f.allLevels)){a+=(!e?", ":"")+f.name;e=false;if(f.bounds.containsBounds(b)){c=f.minZoom}}}.bind(this));if(a==""){this.container.hide()}else{this.container.update("Sources : "+a).show()}};function AdReloader(b,a){this.map=b;this.adCollections=new Object();this.managedElts=[];GEvent.bind(this.map,"moveend",this,function(){this.newEvent()})}AdReloader.prototype.newEvent=function(){var c,b;for(var a=0;a<this.managedElts.length;a++){c=this.managedElts[a];if(++c.evtCount==c.nbEvts){c.evtCount=0;b=c.collection;b.refreshFunction(c.elt,this.chooseAdFromCollection(b))}}};AdReloader.prototype.chooseAdFromCollection=function(a){return a.ads[Math.floor(Math.random()*a.ads.length)]};AdReloader.prototype.addCollection=function(c,b){var a;if(b&&b.refreshFunction){a=b.refreshFunction}else{a=function(d,e){d.writeAttribute({href:e.href});d.firstDescendant().src=e.src}}this.adCollections[c]={name:c,refreshFunction:a,ads:[]}};AdReloader.prototype.addAdToCollection=function(a,b){this.adCollections[a].ads.push(b)};AdReloader.prototype.manage=function(b,a,c){if(b==null){return}if(!c){c=1}this.managedElts.push({elt:b,collection:this.adCollections[a],nbEvts:c,evtCount:0})};AdReloader.prototype.unmanage=function(b){for(var a=0;a<this.managedElts.length;a++){if(this.managedElts[a].elt=b){this.managedElts.splice(a,1);break}}};