var map=null;var MISSING_STREETVIEW='Streetview non disponibile per questo punto.';var ROUTE_SUSPENDED='Il servizio &egrave; momentaneamente sospeso per manutenzione. Sar&agrave; nuovamente attivo entro 1 ora. Ci scusiamo per il disagio arrecato.';var INVALID_ROUTE='Il link al percorso non &egrave; pi&ugrave; valido. Puoi in ogni caso inserire l\'indirizzo di partenza e di arrivo per cacolare l\'itinerario che ti serve.';var EMPTY_ROUTE="Nessun percorso attivo. Effettua una ricerca."
var INVALID_START_ADDRESS='Indirizzo di partenza non valido.';var INVALID_END_ADDRESS='Indirizzo di arrivo non valido.';var NO_START_ADDRESS_FINDED='Impossibile trovare l\'indirizzo di partenza. Riprova cambiando le indicazioni.';var NO_END_ADDRESS_FINDED='Impossibile trovare l\'indirizzo di arrivo. Riprova cambiando le indicazioni.';var NOALTERNATIVEROUTE='Nessun percorso alternativo trovato.';var GENERIC_ERROR='Errore durante l\'esecuzione della richiesta. Permi cerca per ricalcorare il percorso.';var selectedAz=-1;var routeDiv=document.getElementById('route');_mSvgEnabled=true;_mSvgForced=true;var doneStartPoint=false;var startMarker=null;var startCircle=null;var endMarker=null;var endCircle=null;var routeConst="ROUTELINE";var orLatitude=0;var orLongitude=0;var defaultStartRadious=350;var defaultEndRadious=350;var theData;var walkResult;var routePolyline=new Array();var routeMarkes=new Array();var routeMarkesWalk=new Array();var walkPolyline=new Array();var changeLineMarkers=new Array();var wikiPoiNumMarkers=new Array();var stepSelMarker=null;var manArrowMarker=null;var wpExtMarker=null;var aPointLat=null;var aPointLon=null;var bPointLat=null;var bPointLon=null;var disambMarkers=new Array();var navClosed=true;var myPano;var currNavPanObj;var googleCommentVisible=false;var trafficLayer=new google.maps.TrafficLayer();function initializeGoogleCommentConnect()
{if(googleCommentVisible)
{$("#div-1391834450866664588").html("");googleCommentVisible=false;}
else
{googleCommentVisible=true;var skin={};skin['BORDER_COLOR']='#cccccc';skin['ENDCAP_BG_COLOR']='#ffffff';skin['ENDCAP_TEXT_COLOR']='#333333';skin['ENDCAP_LINK_COLOR']='#3366ff';skin['ALTERNATE_BG_COLOR']='#ffffdd';skin['CONTENT_BG_COLOR']='#ffffff';skin['CONTENT_LINK_COLOR']='#0000cc';skin['CONTENT_TEXT_COLOR']='#333333';skin['CONTENT_SECONDARY_LINK_COLOR']='#ff9900';skin['CONTENT_SECONDARY_TEXT_COLOR']='#999999';skin['CONTENT_HEADLINE_COLOR']='#333333';skin['DEFAULT_COMMENT_TEXT']='Quanto ritieni utile questo servizio?';skin['HEADER_TEXT']='Calcolo percorso';skin['POSTS_PER_PAGE']='7';google.friendconnect.container.setParentUrl('/');google.friendconnect.container.renderReviewGadget({id:'div-1391834450866664588',site:'14159334370918666296','view-params':{"disableMinMax":"true","scope":"ID","allowAnonymousPost":"false","docId":"calcolapercorso","startMaximized":"true"}},skin);}}
function NavPanObject()
{var startLatitude=0;var startLongitude=0;var endLatitude=0;var endLongitude=0;var description='';var currLat=0;var currLng=0;var lastAngle=0;var degOrientation=0;this.getSLat=function(){return startLatitude;}
this.setSLat=function(val){startLatitude=val;}
this.getSLng=function(){return startLongitude;}
this.setSLng=function(val){startLongitude=val;}
this.getELat=function(){return endLatitude;}
this.setELat=function(val){endLatitude=val;}
this.getELng=function(){return endLongitude;}
this.setELng=function(val){endLongitude=val;}
this.getDescription=function(){return description;}
this.setDescription=function(val){description=val;}
this.getCurrLat=function(){return currLat;}
this.setCurrLat=function(val){currLat=val;}
this.getCurrLng=function(){return currLng;}
this.setCurrLng=function(val){currLng=val;}
this.getLastAngle=function(){return lastAngle;}
this.setLastAngle=function(val){lastAngle=val;}
this.getDegOrientation=function(){return degOrientation;}
this.setDegOrientation=function(val){degOrientation=val;}}
function mapClearSingleOverlay(marker)
{marker.setMap(null);}
function mapClearArrayOverlay(markerArr)
{for(i=0;i<markerArr.length;i++)
{markerArr[i].setMap(null);}}
function clearStartCircle()
{if(startCircle!=null)
{mapClearSingleOverlay(startCircle);startCircle=null;}}
function clearStartMarker()
{if(startMarker!=null)
{mapClearSingleOverlay(startMarker);startMarker=null;}}
function clearWikiPoiExtMarker()
{if(wpExtMarker!=null)
{mapClearSingleOverlay(wpExtMarker);wpExtMarker=null;}}
function clearEndCircle()
{if(endCircle!=null)
{mapClearSingleOverlay(endCircle);endCircle=null;}}
function clearEndMarker()
{if(endMarker!=null)
{mapClearSingleOverlay(endMarker);endMarker=null;}}
function clearRouteMarker()
{mapClearArrayOverlay(routeMarkes);routeMarkes.length=0;}
function clearRouteMarkerWalk()
{mapClearArrayOverlay(routeMarkesWalk);routeMarkesWalk.length=0;}
function clearRoutePoly()
{mapClearArrayOverlay(routePolyline);routePolyline.length=0;}
function clearWalkPoly()
{mapClearArrayOverlay(walkPolyline);walkPolyline.length=0;}
function clearDisambMarker()
{mapClearArrayOverlay(disambMarkers);disambMarkers.legnth=0;}
function clearChangeLineMakrer()
{mapClearArrayOverlay(changeLineMarkers);changeLineMarkers.legnth=0;}
function clearWikiPoiNumMarker()
{mapClearArrayOverlay(wikiPoiNumMarkers);wikiPoiNumMarkers.legnth=0;}
function clearManArrowMarker()
{if(manArrowMarker!=null)
{mapClearSingleOverlay(manArrowMarker);manArrowMarker=null;}}
var routeId="";function getObjRelativePos(divId)
{var e=document.getElementById(divId);var offset={x:0,y:0};while(e)
{offset.x+=e.offsetLeft;offset.y+=e.offsetTop;e=e.offsetParent;}
if(document.documentElement&&(document.documentElement.scrollTop||document.documentElement.scrollLeft))
{offset.x-=document.documentElement.scrollLeft;offset.y-=document.documentElement.scrollTop;}
else if(document.body&&(document.body.scrollTop||document.body.scrollLeft))
{offset.x-=document.body.scrollLeft;offset.y-=document.body.scrollTop;}
else if(window.pageXOffset||window.pageYOffset)
{offset.x-=window.pageXOffset;offset.y-=window.pageYOffset;}
return offset;}
function adjustMapSize()
{var ws=getWindowSize();var winW=ws.width;var winH=ws.height;var mapMenuH=document.getElementById('mapmenubox').offsetHeight;var scrollbarW=18;winW=winW-scrollbarW
winH=winH-mapMenuH;$('#box_map').css('width',(winW)+'px');$('#box_map').css('height',(winH)+'px');if(document.getElementById('routeOverflow'))
{var paddingBottomRoute=10;var roPos=getObjRelativePos('routeOverflow');var rbPos=getObjRelativePos('routebox');var deltaH=roPos.y-rbPos.y;$('#routeOverflow').css('height',(winH-deltaH-paddingBottomRoute));}}
$(window).resize(function(){adjustMapSize();adjustHeader();});$(document).ready(function(){$('#commentsbox').toggle('slide',{},1);$('#paramsbox').toggle('slide',{},1);$('#routeNavigationBox').toggle('slide',{},1);$('#permalinkDialog').dialog({resizable:false,autoOpen:false,title:'Permalink al percorso'});$('#messageDialog').dialog({resizable:true,autoOpen:false,title:'Attenzione!',width:350,height:200,modal:false});$('#permalinkBtn').hide('fast');$("#permalinkTextArea").focus(function()
{this.select();})
$('#routePdfBtn').hide('fast');creteMap();$("#stRadious").slider({max:1000,min:100,value:defaultStartRadious});$("#enRadious").slider({max:1000,min:100,value:defaultEndRadious});$('#stRadious').bind('slide',function(event,ui){document.getElementById('stMt').innerHTML=ui.value;if(startCircle!=null)
{clearStartCircle();startCircle=getStartCircle();}});$('#enRadious').bind('slide',function(event,ui){document.getElementById('enMt').innerHTML=ui.value;if(endCircle!=null)
{clearEndCircle();endCircle=getEndCircle();}});document.getElementById('stMt').innerHTML=defaultStartRadious;document.getElementById('enMt').innerHTML=defaultEndRadious;routeId=gup("rid");if(routeId!="")
{manageSingleRoute(routeId);}
var extRouteVal=gup("rType");if(extRouteVal!="")
{manageExternalRouteRequest(extRouteVal);}
var extRouteByAddVal=gup("raType")
if(extRouteByAddVal!="")
{manageExternalRouteRequestByAddress(extRouteByAddVal);}
renderHeaderElement(loadMeteo);adjustHeader();});function runRoutePdf()
{_gaq.push(['_trackEvent','percorso','pdf','',0]);window.open('/mi/routepdf?rid='+escape(routeId).replace(/\+/,'%2B'),'pdf','');}
function manageSingleRoute(rid)
{var stTime=new Date().getTime();var jsonurl="/mi/sroute";$.getJSON(jsonurl,{rid:rid},function(data){theData=data;if(data.resultCode=="OK")
{var lastPoint=data.points[data.points.length-1];var stEn=document.getElementById('bpoint');bPointLat=lastPoint.latitude;bPointLon=lastPoint.longitude;stEn.value=lastPoint.address;stEn.style.backgroundColor="#FFFFFF";endMarker=getEndMarker(lastPoint.latitude,lastPoint.longitude,lastPoint.address);endCircle=getEndCircle();var firstPoint=data.points[0];var stSt=document.getElementById('apoint');aPointLat=firstPoint.latitude;aPointLon=firstPoint.longitude;stSt.value=firstPoint.address;stSt.style.backgroundColor="#FFFFFF";startMarker=getStartMarker(firstPoint.latitude,firstPoint.longitude,firstPoint.address);startCircle=getStartCircle();var dlgTxt=document.getElementById('permalinkTextArea');dlgTxt.value="http://www.milano-italia.it/route/"+escape(data.routeId).replace(/\+/,'%2B')+"/"+data.routeNormName+".html";drawRoute(data.points,data.routeValue);$('#permalinkBtn').show('fast');$('#routePdfBtn').show('fast');var elapsed=new Date().getTime()-stTime;_gaq.push(['_trackEvent','percorso','permalink','',elapsed]);}
else
{showMsg(INVALID_ROUTE);}});}
function manageExternalRouteRequestByAddress(routeType)
{aAddress=gup("aAd");bAddress=gup("bAd");document.getElementById('apoint').value=urldecode(aAddress);document.getElementById('bpoint').value=urldecode(bAddress);var frm=document.getElementById("routingTypeForm");if(routeType=="ptransit")
{frm.routingType[0].checked=true;frm.routingType[1].checked=false;frm.routingType[2].checked=false;}
if(routeType=="car")
{frm.routingType[0].checked=false;frm.routingType[1].checked=true;frm.routingType[2].checked=false;}
if(routeType=="walk")
{frm.routingType[0].checked=false;frm.routingType[1].checked=false;frm.routingType[2].checked=true;}
calculateRoute();}
function manageExternalRouteRequest(routeType)
{aPointLat=gup("aLat");aPointLon=gup("aLng");bPointLat=gup("bLat");bPointLon=gup("bLng");var st=new google.maps.LatLng(aPointLat,aPointLon);var en=new google.maps.LatLng(bPointLat,bPointLon);clearStartMarker();clearStartCircle();var geocoder=new google.maps.Geocoder();geocoder.geocode({'latLng':st},function(results,status){if(status==google.maps.GeocoderStatus.OK){document.getElementById('apoint').value=results[0].formatted_address;startMarker=getStartMarker(results[0].geometry.location.lat(),results[0].geometry.location.lng(),results[0].formatted_address);startCircle=getStartCircle();}else{alert("Geocoder failed due to: "+status);}});geocoder.geocode({'latLng':en},function(results,status){if(status==google.maps.GeocoderStatus.OK){document.getElementById('bpoint').value=results[0].formatted_address;endMarker=getEndMarker(results[0].geometry.location.lat(),results[0].geometry.location.lng(),results[0].formatted_address);endCircle=getEndCircle();}else{alert("Geocoder failed due to: "+status);}});var frm=document.getElementById("routingTypeForm");if(routeType=="ptransit")
{frm.routingType[0].checked=true;frm.routingType[1].checked=false;frm.routingType[2].checked=false;RouteByPublicTransit();}
if(routeType=="car")
{frm.routingType[0].checked=false;frm.routingType[1].checked=true;frm.routingType[2].checked=false;RouteByCar();}
if(routeType=="walk")
{frm.routingType[0].checked=false;frm.routingType[1].checked=false;frm.routingType[2].checked=true;RouteByWalk();}}
function TextualZoomControl(container,map){var zoomDiv=document.createElement("div");zoomDiv.className="zoominstyle";var zoomInImg=document.createElement("img");zoomInImg.setAttribute('src','/images/zoominctr.png');zoomInImg.setAttribute('className','customMapControl');zoomInImg.setAttribute('class','customMapControl');zoomDiv.appendChild(zoomInImg);google.maps.event.addDomListener(zoomInImg,'click',function(){map.setZoom(map.getZoom()+1);});var zoomOutImg=document.createElement("img");zoomOutImg.setAttribute('src','/images/zoomoutctr.png');zoomOutImg.setAttribute('className','customMapControl');zoomOutImg.setAttribute('class','customMapControl');zoomDiv.appendChild(zoomOutImg);google.maps.event.addDomListener(zoomOutImg,"click",function(){map.setZoom(map.getZoom()-1);});var mappactrImg=document.createElement("img");mappactrImg.setAttribute('src','/images/mappactr.png');mappactrImg.setAttribute('className','customMapControl');mappactrImg.setAttribute('class','customMapControl');zoomDiv.appendChild(mappactrImg);google.maps.event.addDomListener(mappactrImg,"click",function(){map.setMapTypeId(google.maps.MapTypeId.ROADMAP);});var satellitectrImg=document.createElement("img");satellitectrImg.setAttribute('src','/images/satellitectr.png');satellitectrImg.setAttribute('className','customMapControl');satellitectrImg.setAttribute('class','customMapControl');zoomDiv.appendChild(satellitectrImg);google.maps.event.addDomListener(satellitectrImg,"click",function(){map.setMapTypeId(google.maps.MapTypeId.SATELLITE);});var ibridactrImg=document.createElement("img");ibridactrImg.setAttribute('src','/images/ibridactr.png');ibridactrImg.setAttribute('className','customMapControl');ibridactrImg.setAttribute('class','customMapControl');zoomDiv.appendChild(ibridactrImg);google.maps.event.addDomListener(ibridactrImg,"click",function(){map.setMapTypeId(google.maps.MapTypeId.HYBRID);});var trafficImg=document.createElement("img");trafficImg.setAttribute('src','/images/trafficoctr.png');trafficImg.setAttribute('className','customMapControl');trafficImg.setAttribute('class','customMapControl');zoomDiv.appendChild(trafficImg);google.maps.event.addDomListener(trafficImg,"click",function(){if(trafficLayer.getMap()==null)
{trafficLayer.setMap(map);}
else
{trafficLayer.setMap(null);}});container.appendChild(zoomDiv);}
function getStartCircle()
{var routeType=null;var frm=document.getElementById("routingTypeForm");for(i=0;i<frm.routingType.length;i++){if(frm.routingType[i].checked==true)
routeType=frm.routingType[i].value;}
if(routeType=='ptransit')
{var startds=$('#stRadious').slider('option','value');var circle=new google.maps.Circle({map:map,radius:startds,fillColor:'#3bff52',fillOpacity:0.2,strokeColor:'#FFFFFF',strokeOpacity:0.8,strokeWeight:2});circle.bindTo('center',startMarker,'position');return circle;}
else
{return null;}}
function getEndCircle()
{var routeType=null;var frm=document.getElementById("routingTypeForm");for(i=0;i<frm.routingType.length;i++){if(frm.routingType[i].checked==true)
routeType=frm.routingType[i].value;}
if(routeType=='ptransit')
{var endds=$('#enRadious').slider('option','value');var circle=new google.maps.Circle({map:map,radius:endds,fillColor:'#ff3c07',fillOpacity:0.2,strokeColor:'#FFFFFF',strokeOpacity:0.8,strokeWeight:2});circle.bindTo('center',endMarker,'position');return circle;}
else
{return null;}}
function creteMap()
{adjustMapSize();var latlng=new google.maps.LatLng(45.463983,9.185944);var myOptions={zoom:12,center:latlng,disableDefaultUI:true,disableDoubleClickZoom:true,scrollwheel:false,mapTypeId:google.maps.MapTypeId.ROADMAP};map=new google.maps.Map(document.getElementById("box_map"),myOptions);var container=document.createElement("div");var myControl=new TextualZoomControl(container,map);map.controls[google.maps.ControlPosition.TOP_RIGHT].push(container);google.maps.event.addListener(map,'click',function(event){if(event.latLng){if(selectedAz==1)
{clearStartMarker();clearStartCircle();var geocoder=new google.maps.Geocoder();geocoder.geocode({'latLng':event.latLng},function(results,status){if(status==google.maps.GeocoderStatus.OK){document.getElementById('apoint').value=results[0].formatted_address;startMarker=getStartMarker(results[0].geometry.location.lat(),results[0].geometry.location.lng(),results[0].formatted_address,google.maps.Animation.DROP);startCircle=getStartCircle();}else{alert("Geocoder failed due to: "+status);}});}
else if(selectedAz==2)
{clearEndMarker();clearEndCircle();var geocoder=new google.maps.Geocoder();geocoder.geocode({'latLng':event.latLng},function(results,status){if(status==google.maps.GeocoderStatus.OK){document.getElementById('bpoint').value=results[0].formatted_address;endMarker=getEndMarker(results[0].geometry.location.lat(),results[0].geometry.location.lng(),results[0].formatted_address,google.maps.Animation.DROP);endCircle=getEndCircle();}else{alert("Geocoder failed due to: "+status);}});}
else
{map.setZoom(map.getZoom()+1);}}});}
function fit(markerlist){var bounds=new google.maps.LatLngBounds();for(var i=0;i<markerlist.length;i++){bounds.extend(markerlist[i].getPosition())};map.fitBounds(bounds);}
function fitRoute()
{fit(routeMarkes);}
function mapZoomOnPoint(latitude,longitude,zoomdecrease)
{var bounds=new google.maps.LatLngBounds();bounds.extend(new google.maps.LatLng(latitude,longitude));map.fitBounds(bounds);map.setZoom(map.getZoom()-zoomdecrease);}
function zoomOnPointStreet(latitude,longitude)
{mapZoomOnPoint(latitude,longitude,0);}
function zoomOnPointOverview(latitude,longitude)
{mapZoomOnPoint(latitude,longitude,5);}
function zoomOnStart()
{if(startMarker!=null)
{zoomOnPointOverview(startMarker.getPosition().lat(),startMarker.getPosition().lng());}}
function zoomOnEnd()
{if(endMarker!=null)
{zoomOnPointOverview(endMarker.getPosition().lat(),endMarker.getPosition().lng());}}
function RouteByCar()
{var stTime=new Date().getTime();var obj=document.getElementById("aPiediPartenza");try
{clearRouteMarker();clearRoutePoly();clearChangeLineMakrer();clearWikiPoiNumMarker();clearWalkPoly();clearManArrowMarker();routeDiv.innerHTML="";$('#routePano').html("");}
catch(e){}
$('#loading').show('fast');var directionsService=new google.maps.DirectionsService();var st=new google.maps.LatLng(aPointLat,aPointLon);var en=new google.maps.LatLng(bPointLat,bPointLon);var request={origin:st,destination:en,travelMode:google.maps.DirectionsTravelMode.DRIVING};directionsService.route(request,function(result,status){$('#loading').hide('fast');if(status==google.maps.DirectionsStatus.OK){walkResult=result;drawWalkAndDrivingSteps();}
var elapsed=new Date().getTime()-stTime;_gaq.push(['_trackEvent','percorso','calcola','inMacchina',elapsed]);});}
function RouteByWalk()
{var stTime=new Date().getTime();var obj=document.getElementById("aPiediPartenza");try
{clearRouteMarker();clearRoutePoly();clearChangeLineMakrer();clearWikiPoiNumMarker();clearWalkPoly();clearManArrowMarker();routeDiv.innerHTML="";$('#routePano').html("");}
catch(e){}
$('#loading').show('fast');var directionsService=new google.maps.DirectionsService();var st=new google.maps.LatLng(aPointLat,aPointLon);var en=new google.maps.LatLng(bPointLat,bPointLon);var request={origin:st,destination:en,travelMode:google.maps.DirectionsTravelMode.WALKING};directionsService.route(request,function(result,status){$('#loading').hide('fast');if(status==google.maps.DirectionsStatus.OK){walkResult=result;drawWalkAndDrivingSteps();}
var elapsed=new Date().getTime()-stTime;_gaq.push(['_trackEvent','percorso','calcola','aPiedi',elapsed]);});}
function updatePanoLocation(location)
{updateNavPanel(location.latlng.lat(),location.latlng.lng());var myPos=new google.maps.LatLng(currNavPanObj.getELat(),currNavPanObj.getELng());updateOrientation(location.latlng,myPos);currNavPanObj.setCurrLat(location.latlng.lat());currNavPanObj.setCurrLng(location.latlng.lng());}
function updateYawchanged(yawnum)
{var newOri=currNavPanObj.getDegOrientation()-yawnum;var newOri=newOri<0?360+newOri:newOri;var rotateImg=document.getElementById('dirarrow');rotateImg.src='http://static.milano-italia.it/imgman/arrowrotate?a='+newOri;var angle=parseInt((yawnum/22.5)+0.5);if(angle==16)angle=0;currNavPanObj.setLastAngle(angle);var myPos=new google.maps.LatLng(currNavPanObj.getCurrLat(),currNavPanObj.getCurrLng());if(!navClosed)
{if(manArrowMarker!=null)
{manArrowMarker.setPosition(myPos);manArrowMarker.setIcon(newMImage('http://maps.gstatic.com/mapfiles/cb/man_arrow-'+angle+'.png',49,52,26,32));}
else
{manArrowMarker=getManArrowMarker(currNavPanObj.getCurrLat(),currNavPanObj.getCurrLng(),angle);currNavPanObj.setLastAngle(angle);}
map.panTo(myPos);}}
function updateOrientation(p1,p2)
{var origin=new LatLon(p1.lat(),p1.lng());var destination=new LatLon(p2.lat(),p2.lng());var dir=origin.bearingTo(destination);currNavPanObj.setDegOrientation(dir);var rotateImg=document.getElementById('dirarrow');rotateImg.src='http://static.milano-italia.it/imgman/arrowrotate?a='+dir;}
function updateNavPanel(lat,lng)
{var origin=new LatLon(lat,lng);var destination=new LatLon(currNavPanObj.getELat(),currNavPanObj.getELng());var dist=Math.round(origin.distanceTo(destination,4)*1000);$('#toolbarPanoDistance').html(dist+'m');$('#toolbarPanoDescription').html(currNavPanObj.getDescription());}
function closeNavigation()
{$('#routeNavigationBox').hide(500);navClosed=true;}
function drawWalkNavigationSwitch(idx)
{setWalkAndDrivingData(idx);var panoClient=new GStreetviewClient();var thePoint=new GLatLng(currNavPanObj.getSLat(),currNavPanObj.getSLng());panoClient.getNearestPanoramaLatLng(thePoint,function(newPoint){if(newPoint==null){updateManArrow();showMsg(MISSING_STREETVIEW);}
else
{updateNavPanel(currNavPanObj.getSLat(),currNavPanObj.getSLng());if(navClosed)
{var routePano=document.getElementById('routePano');var home_POV={yaw:0,pitch:6};panoramaOptions={latlng:thePoint,enableFullScreen:true,pov:home_POV};myPano=new GStreetviewPanorama(routePano,panoramaOptions);GEvent.addListener(myPano,"error",handleNoFlash);GEvent.addListener(myPano,"initialized",updatePanoLocation);GEvent.addListener(myPano,"yawchanged",updateYawchanged);$('#routeNavigationBox').show(500);navClosed=false;}
else
{myPano.setLocationAndPOV(thePoint);}}});}
function getRightLeg()
{var result=walkResult;var route=result.routes[0];var leg=route.legs[0];return leg;}
function updateManArrow()
{var myPos=new google.maps.LatLng(currNavPanObj.getSLat(),currNavPanObj.getSLng());if(manArrowMarker!=null)
{manArrowMarker.setPosition(myPos);manArrowMarker.setIcon(newMImage('http://maps.gstatic.com/mapfiles/cb/man_arrow-'+currNavPanObj.getLastAngle()+'.png',49,52,26,32));}
else
{manArrowMarker=getManArrowMarker(currNavPanObj.getSLat(),currNavPanObj.getSLng(),currNavPanObj.getLastAngle());currNavPanObj.setLastAngle(0);}
map.panTo(myPos);}
function setWalkAndDrivingData(idx)
{var leg=getRightLeg();var currPanoStep=leg.steps[idx];currNavPanObj.setSLat(currPanoStep.start_location.lat());currNavPanObj.setSLng(currPanoStep.start_location.lng());currNavPanObj.setELat(currPanoStep.end_location.lat());currNavPanObj.setELng(currPanoStep.end_location.lng());currNavPanObj.setDescription(currPanoStep.instructions);$(".routeStepDescription").css("background-color","#FFFFFF");$(".routeStepNameStyle").css("background-color","#FFFFFF");$("#routeStepDescription_"+idx).css("background-color","#FBFBD8");}
function showMsg(msg)
{$('#messageDialog').html(msg);$('#messageDialog').dialog('open');}
function setCurrentWalkStep(idx)
{setWalkAndDrivingData(idx);updateManArrow();if(!navClosed)
{var panoClient=new GStreetviewClient();var thePoint=new GLatLng(currNavPanObj.getSLat(),currNavPanObj.getSLng());panoClient.getNearestPanoramaLatLng(thePoint,function(newPoint){if(newPoint==null){showMsg(MISSING_STREETVIEW);}
else
{updateNavPanel(currNavPanObj.getSLat(),currNavPanObj.getSLng());myPano.setLocationAndPOV(thePoint);}});}}
function setTransitData(idx)
{currNavPanObj.setSLat(theData.points[idx].latitude);currNavPanObj.setSLng(theData.points[idx].longitude);var nextPIdx=idx+1;nextPIdx=nextPIdx>=theData.points.length?theData.points.length-1:nextPIdx;currNavPanObj.setELat(theData.points[nextPIdx].latitude);currNavPanObj.setELng(theData.points[nextPIdx].longitude);var strTmp='';var cp=theData.points[idx];var np=theData.points[nextPIdx];if(idx==0)
{strTmp='PARENZA! Sali sulla linea ['+cp.lineNumber+'] '+cp.lineName+' <b>'+cp.name+'</b>. Prossima fermata <b>'+np.name+'</b> ';}
else if(idx==nextPIdx)
{strTmp='ARRIVO! Scendi alla fermata <b>'+cp.name+'</b> della linea ['+cp.lineNumber+'] '+cp.lineName;}
else
{if(cp.lineNumber==np.lineNumber)
{strTmp='<b>'+cp.name+'</b>. Prosegui sulla linea ['+cp.lineNumber+'] '+cp.lineName+'. Prossima fermata <b>'+np.name+'</b> ';}
else
{strTmp='CAMBIO LINEA! Scendi a <b>'+cp.name+'</b>  e prendi la linea ['+np.lineNumber+'] '+np.lineName+' alla fermata <b>'+np.name+'</b> ';}}
currNavPanObj.setDescription(strTmp);$(".routeStepNameStyle").css("background-color","#FFFFFF");$(".routeStepDescription").css("background-color","#FFFFFF");$("#routeStepName_"+idx).css("background-color","#FBFBD8");}
function setCurrentTransitStep(idx)
{setTransitData(idx);updateManArrow();if(!navClosed)
{var panoClient=new GStreetviewClient();var thePoint=new GLatLng(currNavPanObj.getSLat(),currNavPanObj.getSLng());panoClient.getNearestPanoramaLatLng(thePoint,function(newPoint){if(newPoint==null){showMsg(MISSING_STREETVIEW);}
else
{updateNavPanel(currNavPanObj.getSLat(),currNavPanObj.getSLng());myPano.setLocationAndPOV(thePoint);}});}}
function drawTransitNavigationSwitch(idx)
{setTransitData(idx);var panoClient=new GStreetviewClient();var thePoint=new GLatLng(currNavPanObj.getSLat(),currNavPanObj.getSLng());panoClient.getNearestPanoramaLatLng(thePoint,function(newPoint){if(newPoint==null){updateManArrow();showMsg(MISSING_STREETVIEW);}
else
{updateNavPanel(currNavPanObj.getSLat(),currNavPanObj.getSLng());if(navClosed)
{var routePano=document.getElementById('routePano');var home_POV={yaw:0,pitch:6};panoramaOptions={latlng:thePoint,enableFullScreen:true,pov:home_POV};myPano=new GStreetviewPanorama(routePano,panoramaOptions);GEvent.addListener(myPano,"error",handleNoFlash);GEvent.addListener(myPano,"initialized",updatePanoLocation);GEvent.addListener(myPano,"yawchanged",updateYawchanged);$('#routeNavigationBox').show(500);navClosed=false;}
else
{myPano.setLocationAndPOV(thePoint);}}});}
function drawWalkAndDrivingSteps(){currNavPanObj=new NavPanObject;var result=walkResult;var route=result.routes[0];var leg=route.legs[0];var obj=routeDiv;var firstStep=leg.steps[0];var routePano=document.getElementById('routePano');var home_point=new GLatLng(firstStep.start_location.lat(),firstStep.start_location.lng());var home_POV={yaw:0,pitch:6};panoramaOptions={latlng:home_point,enableFullScreen:true,pov:home_POV};myPano=new GStreetviewPanorama(routePano,panoramaOptions);GEvent.addListener(myPano,"error",handleNoFlash);GEvent.addListener(myPano,"initialized",updatePanoLocation);GEvent.addListener(myPano,"yawchanged",updateYawchanged);var routeTitle=createDiv('routeTitle');routeTitle.innerHTML='Distanza '+leg.distance.text+' circa '+leg.duration.text;obj.appendChild(routeTitle);var txtWarn='';for(i=0;i<route.warnings.length;i++)
{txtWarn+=route.warnings[i];}
if(txtWarn!='')
{txtWarn+='<br>';}
txtWarn+='<span class="routeCopyrightsStyle">'+route.copyrights+'</span>';var routeOverflow=createDiv('routeOverflow');obj.appendChild(routeOverflow);adjustMapSize();var routeWarnings=createDiv('routeWarnings');routeWarnings.innerHTML=txtWarn;routeOverflow.appendChild(routeWarnings);var walkLatLngs=new Array();for(var i=0;i<leg.steps.length;i++){var step=leg.steps[i];var marker=getWalkOrCarMarker(step.start_location.lat(),step.start_location.lng(),i);routeMarkes.push(marker);var routeStep=createDiv('routeStep');routeOverflow.appendChild(routeStep);var routeStepDirectionNumber=createDiv('routeStepDirectionNumber');routeStepDirectionNumber.innerHTML=i+1;routeStep.appendChild(routeStepDirectionNumber);var routeStepDescription=createDiv('routeStepDescription','routeStepDescription_'+i);routeStepDescription.setAttribute('onclick','setCurrentWalkStep('+i+');');routeStep.appendChild(routeStepDescription);var routeStepText=createDiv('routeStepText');routeStepText.innerHTML=step.instructions;routeStepDescription.appendChild(routeStepText);var routeStepDistance=createDiv('routeStepDistance');routeStepDistance.innerHTML=step.distance.text+" circa "+step.duration.text;routeStepDescription.appendChild(routeStepDistance);var routeStepCamera=createDiv('routeStepCamera');routeStepCamera.setAttribute('onclick','drawWalkNavigationSwitch('+i+');');routeStepCamera.innerHTML='<img src="/images/camera_dr1.png"></a>';routeStep.appendChild(routeStepCamera);routeStep.innerHTML=routeStep.innerHTML+'<div class="clear"></div>';if(i<(leg.steps.length-1))
{var routeStepSeparator=createDiv('routeStepSeparator');routeOverflow.appendChild(routeStepSeparator);}
walkLatLngs=walkLatLngs.concat(step.path);}
drawWalkAndDrivingPolyline(walkLatLngs);fit(routeMarkes);}
function RouteByWalkDetail(divName,oLat,oLon,dLat,dLon)
{var stTime=new Date().getTime();try
{clearRouteMarkerWalk();clearWalkPoly();clearManArrowMarker();$('div[id^="aPiedi"]').html("");if(!navClosed)
{$('#routeNavigationBox').hide(500);navClosed=true;}
$('#routePano').html("");}
catch(e){}
if($('#'+divName).css('display')=="block")
{$('#'+divName).css('display','none');fitRoute();}
else
{$('div[id^="aPiedi"]').css('display','none');var directionsService=new google.maps.DirectionsService();var st=new google.maps.LatLng(oLat,oLon);var en=new google.maps.LatLng(dLat,dLon);var request={origin:st,destination:en,travelMode:google.maps.DirectionsTravelMode.WALKING};directionsService.route(request,function(result,status){if(status==google.maps.DirectionsStatus.OK){walkResult=result;drawWalkDetail(divName);}
var elapsed=new Date().getTime()-stTime;_gaq.push(['_trackEvent','percorso','calcola',divName,elapsed]);});}}
function drawWalkDetail(divName)
{currNavPanObj=new NavPanObject;var result=walkResult;var route=result.routes[0];var leg=route.legs[0];var obj=routeDiv;var firstStep=leg.steps[0];var routePano=document.getElementById('routePano');var home_point=new GLatLng(firstStep.start_location.lat(),firstStep.start_location.lng());var home_POV={yaw:0,pitch:6};panoramaOptions={latlng:home_point,enableFullScreen:true,pov:home_POV};myPano=new GStreetviewPanorama(routePano,panoramaOptions);GEvent.addListener(myPano,"error",handleNoFlash);GEvent.addListener(myPano,"initialized",updatePanoLocation);GEvent.addListener(myPano,"yawchanged",updateYawchanged);var txtWarn='';for(i=0;i<route.warnings.length;i++)
{txtWarn+=route.warnings[i];}
if(txtWarn!='')
{txtWarn+='<br>';}
txtWarn+='<span class="routeCopyrightsStyle">'+route.copyrights+'</span>';var directionDiv=document.getElementById(divName);directionDiv.style.display="inline";var routeWarnings=createDiv('routeWarnings');routeWarnings.innerHTML=txtWarn;directionDiv.appendChild(routeWarnings);var walkLatLngs=new Array();var middlePointLat=0;var middlePointLon=0;for(var i=0;i<leg.steps.length;i++){var step=leg.steps[i];if(i==(Math.floor(leg.steps.length/2)))
{middlePointLat=step.start_location.lat();middlePointLon=step.start_location.lng();}
var marker=getWalkOrCarMarker(step.start_location.lat(),step.start_location.lng(),i);routeMarkesWalk.push(marker);var routeStep=createDiv('routeStep');directionDiv.appendChild(routeStep);var routeStepDirectionNumber=createDiv('routeStepDirectionNumber');routeStepDirectionNumber.innerHTML=i+1;routeStep.appendChild(routeStepDirectionNumber);var routeStepDescription=createDiv('routeStepDescription','routeStepDescription_'+i);routeStepDescription.setAttribute('onclick','setCurrentWalkStep('+i+');');routeStep.appendChild(routeStepDescription);$(".routeStepDescription").css('width','234px');var routeStepText=createDiv('routeStepText');routeStepText.innerHTML=step.instructions;routeStepDescription.appendChild(routeStepText);var routeStepDistance=createDiv('routeStepDistance');routeStepDistance.innerHTML=step.distance.text+" circa "+step.duration.text;routeStepDescription.appendChild(routeStepDistance);var routeStepCamera=createDiv('routeStepCamera');routeStepCamera.setAttribute('onclick','drawWalkNavigationSwitch('+i+');');routeStepCamera.innerHTML='<img src="/images/camera_dr1.png"></a>';routeStep.appendChild(routeStepCamera);routeStep.innerHTML=routeStep.innerHTML+'<div class="clear"></div>';if(i<(leg.steps.length-1))
{var routeStepSeparator=createDiv('routeStepSeparator');directionDiv.appendChild(routeStepSeparator);}
walkLatLngs=walkLatLngs.concat(step.path);}
drawWalkAndDrivingPolyline(walkLatLngs);if(middlePointLat>0)
{mapZoomOnPoint(middlePointLat,middlePointLon,3);}}
function calculateRouteSuspend(){showMsg(ROUTE_SUSPENDED);}
function calculateRoute(){_gaq.push(['_trackEvent','percorso','calcola','TOTALE']);$('#alternativeButton').hide('fast');var stIn=document.getElementById('apoint');var stEn=document.getElementById('bpoint');stIn.style.backgroundColor="#FFFFFF";stEn.style.backgroundColor="#FFFFFF";if(stIn.value=="")
{showMsg(INVALID_START_ADDRESS);return;}
if(stEn.value=="")
{showMsg(INVALID_END_ADDRESS);return;}
var outDiv=routeDiv;var geocoder=new google.maps.Geocoder();var swLatLng=new google.maps.LatLng(44.980342,7.943115);var neLatLng=new google.maps.LatLng(45.966425,10.233765);var bb=new google.maps.LatLngBounds(swLatLng,neLatLng);geocoder.geocode({'address':stIn.value,'bounds':bb},function(results,status){if(status==google.maps.GeocoderStatus.OK){outDiv.innerHTML="";if(results.length>1)
{_gaq.push(['_trackEvent','percorso','disambiguazione',stIn.value,0]);stIn.style.backgroundColor="#FFF1A8";drawDisambInfo(results,true);}
else
{disambEndPoint(results[0].geometry.location.lat(),results[0].geometry.location.lng(),results[0].formatted_address);}}else{showMsg(NO_START_ADDRESS_FINDED);}});}
function disambEndPoint(lat,lon,address)
{var stIn=document.getElementById('apoint');var stEn=document.getElementById('bpoint');stIn.style.backgroundColor="#FFFFFF";stEn.style.backgroundColor="#FFFFFF";clearDisambMarker();aPointLat=lat;aPointLon=lon;clearStartMarker();clearStartCircle();startMarker=getStartMarker(aPointLat,aPointLon,address);startCircle=getStartCircle();stIn.value=address;var outDiv=routeDiv;var geocoder=new google.maps.Geocoder();var swLatLng=new google.maps.LatLng(44.980342,7.943115);var neLatLng=new google.maps.LatLng(45.966425,10.233765);var bb=new google.maps.LatLngBounds(swLatLng,neLatLng);geocoder.geocode({'address':stEn.value,'bounds':bb},function(results,status){if(status==google.maps.GeocoderStatus.OK){outDiv.innerHTML="";if(results.length>1)
{_gaq.push(['_trackEvent','percorso','disambiguazione',stEn.value,0]);stEn.style.backgroundColor="#FFF1A8";drawDisambInfo(results,false);}
else
{setEndPoint(results[0].geometry.location.lat(),results[0].geometry.location.lng(),results[0].formatted_address);}}else{showMsg(NO_END_ADDRESS_FINDED);}});}
function setEndPoint(lat,lon,address)
{clearDisambMarker();var stEn=document.getElementById('bpoint');bPointLat=lat;bPointLon=lon;clearEndMarker();clearEndCircle();endMarker=getEndMarker(bPointLat,bPointLon,address);endCircle=getEndCircle();stEn.value=address;stEn.style.backgroundColor="#FFFFFF";var outDiv=routeDiv;outDiv.innerHTML="";var frm=document.getElementById("routingTypeForm");var routeType="ptransit";for(i=0;i<frm.routingType.length;i++){if(frm.routingType[i].checked==true)
routeType=frm.routingType[i].value;}
$('#permalinkBtn').hide('fast');$('#routePdfBtn').hide('fast');if(routeType=="ptransit")
{RouteByPublicTransit();}
if(routeType=="car")
{RouteByCar();}
if(routeType=="walk")
{RouteByWalk();}}
function drawDisambInfo(results,isFirstPoint)
{var outDiv=routeDiv;var disambTitle=document.createElement("div");disambTitle.setAttribute('className','disambTitleStyle');disambTitle.setAttribute('class','disambTitleStyle');if(isFirstPoint)
{disambTitle.innerHTML='<div class="disambIco"><img src="/images/dd-start_round.png" style="padding-right: 4px"></div> <div class="disambTit">Forse cercavi:</div> ';}
else
{disambTitle.innerHTML='<div class="disambIco"><img src="/images/dd-end_round.png" style="padding-right: 4px"></div> <div class="disambTit">Forse cercavi:</div> ';}
outDiv.appendChild(disambTitle);var disambOverflow=document.createElement("div");disambOverflow.setAttribute('className','disambOverflowStyle');disambOverflow.setAttribute('class','disambOverflowStyle');outDiv.appendChild(disambOverflow);var endFor=results.length>9?9:results.length;for(var i=0;i<endFor;i++)
{disambPointMain=document.createElement("div");disambPointMain.setAttribute('className','disambPointMainStyle');disambPointMain.setAttribute('class','disambPointMainStyle');disambOverflow.appendChild(disambPointMain);disambPointIcon=document.createElement("div");disambPointIcon.setAttribute('className','disambPointIconStyle');disambPointIcon.setAttribute('class','disambPointIconStyle');disambPointIcon.innerHTML='<a href="javascript: zoomOnPointOverview('+results[i].geometry.location.lat()+','+results[i].geometry.location.lng()+');"><img src="http://maps.google.it/intl/it_it/mapfiles/icon_yellow'+(i+1)+'.png"></a>';disambPointMain.appendChild(disambPointIcon);disambPointName=document.createElement("div");disambPointName.setAttribute('className','disambPointNameStyle');disambPointName.setAttribute('class','disambPointNameStyle');if(isFirstPoint)
{disambPointName.innerHTML='<a href="javascript: disambEndPoint(\''+results[i].geometry.location.lat()+'\',\''+results[i].geometry.location.lng()+'\',\''+results[i].formatted_address.replace("'","\\'")+'\');">'+results[i].address_components[1].long_name+" "+results[i].address_components[2].short_name+" ("+results[i].address_components[3].long_name+")</a>";}
else
{disambPointName.innerHTML='<a href="javascript: setEndPoint(\''+results[i].geometry.location.lat()+'\',\''+results[i].geometry.location.lng()+'\',\''+results[i].formatted_address.replace("'","\\'")+'\');">'+results[i].address_components[1].long_name+" "+results[i].address_components[2].short_name+" ("+results[i].address_components[3].long_name+")</a>";}
disambPointMain.appendChild(disambPointName);disambPointAddress=document.createElement("div");disambPointAddress.setAttribute('className','disambPointAddressStyle');disambPointAddress.setAttribute('class','disambPointAddressStyle');disambPointAddress.innerHTML=results[i].formatted_address;disambPointName.appendChild(disambPointAddress);disambDivClear=document.createElement("div");disambDivClear.setAttribute('className','clear');disambDivClear.setAttribute('class','clear');disambPointMain.appendChild(disambDivClear);var numTmpMarker=getNumberMarker(results[i].geometry.location.lat(),results[i].geometry.location.lng(),i+1,results[i].formatted_address);disambMarkers.push(numTmpMarker);}
fit(disambMarkers);}
function RouteByPublicTransit()
{var stTime=new Date().getTime();var routeType='TIME';var jsonurl="/mi/routes";var chkTt=document.getElementsByName('tansitTypes');var ttparam="";for(z=0;z<chkTt.length;z++)
{if(chkTt[z].checked)
{ttparam+=chkTt[z].value+",";}}
if(ttparam!="")
{ttparam+="4";}
var startds=$('#stRadious').slider('option','value');var endds=$('#enRadious').slider('option','value');$('#loading').show('fast');$.getJSON(jsonurl,{dlat:bPointLat,dlon:bPointLon,ods:startds,dds:endds,olat:aPointLat,olon:aPointLon,ty:routeType,tt:ttparam},function(data){var NOSTARTPOINT_MSG='Non &egrave; stato possibile travare un mezzo di trasporto in un raggio di '+startds+' metri rispetto al punto di <b>PARTENZA</b> indicato. Per calcolare il percorso sono state utilizzate le fermate pi&ugrave; vicine tra quelle disponibili.';var NOENDPOINT_MSG='Non &egrave; stato possibile travare un mezzo di trasporto in un raggio di '+endds+' metri rispetto al punto di <b>ARRIVO</b> indicato. Per calcolare il percorso sono state utilizzate le fermate pi&ugrave; vicine tra quelle disponibili.';var NOENDANDSTARTPOINT_MSG='Non &egrave; stato possibile travare un mezzo di trasporto in un raggio di '+startds+' metri rispetto al punto di <b>PARTENZA</b> e di '+endds+' metri rispetto al punto di <b>ARRIVO</b> indicati. Per calcolare il percorso sono state utilizzate le fermate p&ugrave; vicine tra quelle disponibili per entrambi i punti.';var NOROUTEFINDED_MSG='Non &egrave; stato possibile travare un percorso con gli indirizzi specificati. Ti ricordiamo che i percorsi sono disponibli solo per l\'area di Milano e per alcune zone limitrofe.';theData=data;$('#loading').hide('fast');if(data.resultCode=="OK")
{var elapsed=new Date().getTime()-stTime;_gaq.push(['_trackEvent','percorso','calcola','trasportoPubblico',elapsed]);routeFinded(data,stTime);}
else if(data.resultCode=="NOSTARTPOINT"){_gaq.push(['_trackEvent','percorso','calcola','nostartpoint']);showMsg(NOSTARTPOINT_MSG);routeFinded(data,stTime);}
else if(data.resultCode=="NOENDPOINT"){_gaq.push(['_trackEvent','percorso','calcola','noendpoint']);showMsg(NOENDPOINT_MSG);routeFinded(data,stTime);}
else if(data.resultCode=="NOENDANDSTARTPOINT"){_gaq.push(['_trackEvent','percorso','calcola','noendandstartpoint']);showMsg(NOENDANDSTARTPOINT_MSG);routeFinded(data,stTime);}
else if(data.resultCode=="NOROUTEFINDED"){_gaq.push(['_trackEvent','percorso','calcola','noroutedefined']);showMsg(NOROUTEFINDED_MSG);}});}
function routeFinded(data)
{var dlgTxt=document.getElementById('permalinkTextArea');dlgTxt.value="http://www.milano-italia.it/route/"+escape(data.routeId).replace(/\+/,'%2B')+"/"+data.routeNormName+".html";routeId=data.routeId;drawRoute(data.points,data.routeValue);$('#permalinkBtn').show('fast');$('#routePdfBtn').show('fast');}
function chooseAlternativePoint(lat,lon,isStart,address)
{if(isStart)
{aPointLat=lat;aPointLon=lon;if(startMarker!=null)
{map.removeOverlay(startMarker);}
startMarker=getStartMarker(aPointLat,aPointLon,"");startCircle=getStartCircle();RouteByPublicTransit();}
else
{bPointLat=lat;bPointLon=lon;if(endMarker!=null)
{map.removeOverlay(endMarker);}
endMarker=getStartMarker(bPointLat,bPointLon,"");startCircle=getStartCircle();RouteByPublicTransit();}}
function moveto(rmid,obj)
{if(stepSelMarker!=null)
{stepSelMarker.setMap(null);stepSelMarker=null;}
map.panTo(routeMarkes[rmid].getPosition());routeMarkes[rmid].setMap(null);stepSelMarker=getStepSelectedMarker(routeMarkes[rmid].getPosition().lat(),routeMarkes[rmid].getPosition().lng());routeMarkes[rmid].setMap(map);obj.style.backgroundColor="#ffffaa";}
function resetmove(obj)
{if(stepSelMarker!=null)
{stepSelMarker.setMap(null);stepSelMarker=null;}
obj.style.backgroundColor="#ffffff";}
function drawRoute(routepoints,routeValue)
{currNavPanObj=new NavPanObject;try
{clearRouteMarker();clearRoutePoly();clearChangeLineMakrer();clearWikiPoiNumMarker();clearWalkPoly();clearManArrowMarker();routeDiv.innerHTML="";}
catch(e){}
var routeTitle=createDiv('routeTitle');routeTitle.innerHTML='Arrivo previsto in '+Math.round(routeValue/60)+' minuti ';routeDiv.appendChild(routeTitle);$('#alternativeButton').show('fast');var routeOverflow=createDiv('routeOverflow');routeDiv.appendChild(routeOverflow);adjustMapSize();routeWalkMainLine=createDiv('routeWalkMainLineStyle');routeOverflow.appendChild(routeWalkMainLine);routeWalkaPiediPartenza=createDiv('routeWalkDirectionStyle','aPiediPartenza');routeOverflow.appendChild(routeWalkaPiediPartenza);routeWalkImage=createDiv('routeWalkImageLineStyle');routeWalkImage.innerHTML='<img src="/images/device4.jpg">'
routeWalkMainLine.appendChild(routeWalkImage);routeWalkName=createDiv('routeWalkNameLineStyle');routeWalkName.innerHTML='<a href="javascript: RouteByWalkDetail(\'aPiediPartenza\',\''+aPointLat+'\',\''+aPointLon+'\',\''+routepoints[0].latitude+'\',\''+routepoints[0].longitude+'\')">Percorso a piedi</a> <div id="directionSt"></div>';routeWalkMainLine.appendChild(routeWalkName);var oldlineid=-1;var routeStepLine;for(var n=0;n<routepoints.length;n++)
{var onemarker=getStepMarker(routepoints[n],n);if(oldlineid!=routepoints[n].lineId)
{if(n!=0)
{routeWalkMainLine=createDiv('routeWalkMainLineStyle');routeOverflow.appendChild(routeWalkMainLine);routeWalkImage=createDiv('routeWalkImageLineStyle');routeWalkImage.innerHTML='<img src="/images/device4.jpg">'
routeWalkMainLine.appendChild(routeWalkImage);routeWalkName=createDiv('routeWalkNameLineStyle');routeWalkName.innerHTML='Cambio linea trasporto';routeWalkMainLine.appendChild(routeWalkName);}
var chlnMarker=getChLnMarker(routepoints[n]);changeLineMarkers.push(chlnMarker);routeStepLine=createDiv('routeStepLineStyle');routeOverflow.appendChild(routeStepLine);routeStepMainLine=createDiv('routeStepMainLineStyle');routeStepLine.appendChild(routeStepMainLine);routeStepMainImage=createDiv('routeStepMainImageLineStyle');routeStepMainImage.innerHTML='<img src="/images/device'+routepoints[n].lineType+'.jpg">';routeStepMainLine.appendChild(routeStepMainImage);routeStepMainName=createDiv('routeStepMainNameLineStyle');routeStepMainName.innerHTML='<a target="new" href="/percorso/linea/'+routepoints[n].lineId+'/'+routepoints[n].lineNormalizedName+'.html">['+routepoints[n].lineNumber+'] '+routepoints[n].lineName+'</a>';routeStepMainLine.appendChild(routeStepMainName);}
routeMarkes.push(onemarker);var routeStep=createDiv('routeStepStyle');routeStepLine.appendChild(routeStep);if(oldlineid!=routepoints[n].lineId)
{oldlineid=routepoints[n].lineId;}
else
{var routeStepSeparator=createDiv('routeStepSeparator');routeStep.appendChild(routeStepSeparator);}
var routeStepName=createDiv('routeStepNameStyle','routeStepName_'+n);routeStepName.innerHTML=routepoints[n].name;routeStepName.setAttribute('onclick','setCurrentTransitStep('+n+');');routeStep.appendChild(routeStepName);var routeStepCamera=createDiv('routeStepCamera');routeStepCamera.setAttribute('onclick','drawTransitNavigationSwitch('+n+');');routeStepCamera.innerHTML='<img src="/images/camera_dr1.png">';routeStep.appendChild(routeStepCamera);var routeStepExtLink=createDiv('routeStepExtLink');routeStepExtLink.innerHTML='<a target="new" href="/percorso/fermata/'+routepoints[n].id+'/'+routepoints[n].normalizedName+'.html"><img src="/images/ico_external_link.gif"></a>';routeStep.appendChild(routeStepExtLink);routeStep.innerHTML=routeStep.innerHTML+'<div class="clear"></div>';}
var lastChlnMarker=getChLnMarker(routepoints[routepoints.length-1]);changeLineMarkers.push(lastChlnMarker);drawRoutePolyline(routeMarkes);routeWalkMainLine=createDiv('routeWalkMainLineStyle');routeOverflow.appendChild(routeWalkMainLine);routeWalkImage=createDiv('routeWalkImageLineStyle');routeWalkImage.innerHTML='<img src="/images/device4.jpg">'
routeWalkMainLine.appendChild(routeWalkImage);routeWalkName=createDiv('routeWalkNameLineStyle');routeWalkName.innerHTML='<a href="javascript: RouteByWalkDetail(\'aPiediArrivo\',\''+routepoints[routepoints.length-1].latitude+'\',\''+routepoints[routepoints.length-1].longitude+'\',\''+bPointLat+'\',\''+bPointLon+'\')">Percorso a piedi</a> <div id="directionSt"></div>';routeWalkMainLine.appendChild(routeWalkName);routeWalkaPiediArrivo=createDiv('routeWalkDirectionStyle','aPiediArrivo');routeOverflow.appendChild(routeWalkaPiediArrivo);fit(routeMarkes);}
function getOtherRoutes()
{var jsonurl="/mi/oroutes";$('#loading').show('fast');$.getJSON(jsonurl,{},function(data){$('#loading').hide('fast');if(data.resultCode=="OK")
{drawOtherRoutes(data);}
else if(data.resultCode=="NOALTERNATIVEROUTE"){showMsg(NOALTERNATIVEROUTE);}
else
{showMsg(GENERIC_ERROR);}});}
function drawOtherRoutes(data)
{var outDiv=routeDiv;outDiv.innerHTML="";var otherTitle=createDiv('otherRoutesTitleStyle');otherTitle.innerHTML='Percorsi alternativi: ';outDiv.appendChild(otherTitle);var otherOverflow=createDiv('routeOverflow');outDiv.appendChild(otherOverflow);adjustMapSize();var endFor=data.otherRoutes.length;var maxduration=0;for(var i=0;i<endFor;i++)
{maxduration=maxduration<=data.otherRoutes[i].values?data.otherRoutes[i].values:maxduration;}
for(var i=0;i<endFor;i++)
{otherMain=createDiv('otherMainStyle');otherMain.setAttribute('onclick','javascript: selectOtherRoute(\''+data.otherRoutes[i].routeId+'\');');otherMain.setAttribute('onmouseover','javascript: this.style.border = \'1px dotted #F2871C\';');otherMain.setAttribute('onmouseout','javascript: this.style.border = \'1px dotted #BABABA\';');otherOverflow.appendChild(otherMain);otherDetail=createDiv('otherDetailStyle');otherMain.appendChild(otherDetail);var tmpHtmlString="";for(var j=0;j<data.otherRoutes[i].lineTypes.length;j++)
{var otherLineTypeImage=createDiv('otherLineTypeImageStyle');otherLineTypeImage.innerHTML=data.otherRoutes[i].lineNums[j]+'<img src="/images/device'+data.otherRoutes[i].lineTypes[j]+'.jpg" style="width:15px">';otherDetail.appendChild(otherLineTypeImage);}
otherName=createDiv('otherNameStyle');otherDetail.appendChild(otherName);otherNameFermate=createDiv('otherNameFermate');otherName.appendChild(otherNameFermate);otherNameFermateTitle=createDiv('otherNameFermateTitle');otherNameFermateTitle.innerHTML='Fermate';otherNameFermate.appendChild(otherNameFermateTitle);otherNameFermateValue=createDiv('otherNameFermateValue');otherNameFermateValue.innerHTML=data.otherRoutes[i].totalElements;otherNameFermate.appendChild(otherNameFermateValue);otherNameMinuti=createDiv('otherNameMinuti');otherName.appendChild(otherNameMinuti);otherNameMinutiTitle=createDiv('otherNameMinutiTitle');otherNameMinutiTitle.innerHTML='Minuti';otherNameMinuti.appendChild(otherNameMinutiTitle);otherNameMinutiValue=createDiv('otherNameMinutiValue');otherNameMinutiValue.innerHTML=Math.round(data.otherRoutes[i].values/60);otherNameMinuti.appendChild(otherNameMinutiValue);disambDivClear=createDiv('clear');otherMain.appendChild(disambDivClear);}}
function loadWikipedia()
{try
{clearWikiPoiNumMarker();clearManArrowMarker();routeDiv.innerHTML="";}
catch(e){}
var routepoints=theData.points;var strPointIds="";for(var n=0;n<routepoints.length;n++)
{strPointIds+=routepoints[n].id;if(n!=(routepoints.length-1))
{strPointIds+=",";}}
$('#loading').show('fast');var jsonurl='http://services.milano-italia.it/miServices/routewikipoi?pnts='+strPointIds+'&rad=250';var obj=document.getElementById("poiList");$.getJSON(jsonurl+"&callback=?",{},function(data){$('#loading').hide('fast');var routeTitle=createDiv('routeTitle');routeTitle.innerHTML='Trovati '+data.length+' punti di interesse'+'<br> <input type="button" value="Indietro" onclick="calculateRoute();">';routeDiv.appendChild(routeTitle);var routeOverflow=createDiv('routeOverflow');routeDiv.appendChild(routeOverflow);adjustMapSize();var limit=data.length>=50?50:data.length;var interstingPoints="";var lastWpd=null;var lastDivStopForWpd;for(i=0;i<limit;i++)
{var wpd=data[i];var wpnMarker=getWikiPoiNumMarker(i+1,wpd);wikiPoiNumMarkers.push(wpnMarker);if(lastWpd==null||lastWpd.pointId!=wpd.pointId)
{lastDivStopForWpd=createDiv('divStopForWpd');routeOverflow.appendChild(lastDivStopForWpd);var divStopForWpdTitleMain=createDiv('divStopForWpdTitleMain');lastDivStopForWpd.appendChild(divStopForWpdTitleMain);var divStopForWpdTitleImg=createDiv('divStopForWpdTitleImg');divStopForWpdTitleImg.innerHTML='<img src="/images/device'+wpd.pointLineType+'_sm.png">';divStopForWpdTitleMain.appendChild(divStopForWpdTitleImg);var divStopForWpdTitle=createDiv('divStopForWpdTitle');divStopForWpdTitle.innerHTML='['+wpd.pointLineNumber+'] - '+wpd.pointName;divStopForWpdTitleMain.appendChild(divStopForWpdTitle);lastWpd=wpd;}
var divWpd=createDiv('divWpd');lastDivStopForWpd.appendChild(divWpd);var divWpdTitle=createDiv('divWpdTitle');divWpdTitle.innerHTML=(i+1)+". "+wpd.title+'<img alt="Vedi l\'articolo orginale su Wikipedia" src="/images/btn_ext.png" onclick="gotoWikipedia(\''+wpd.title+'\');">';divWpd.appendChild(divWpdTitle);var htmImg="";var tappo='http://www.milano-italia.it/images/icoNoPhotoSml.png';if(wpd.imgLocalName.length)
{htmImg='<div class="wrap0"><div class="wrap1"><div class="wrap2"><div class="wrap3"><div class="news_img"><img src="http://static.milano-italia.it/imgman/imgrsz?w=64&h=48&sd=CROP&url='+urlencode('http://www.milano-italia.it/images/wikipoi/'+wpd.imgLocalName)+'&aurl='+urlencode(tappo)+'"/></div></div></div></div></div>';}
else
{htmImg='<div class="wrap0"><div class="wrap1"><div class="wrap2"><div class="wrap3"><div class="news_img"><img src="'+tappo+'"/></div></div></div></div></div>';}
var divWpdDescription=createDiv('divWpdDescription');divWpdDescription.innerHTML=(htmImg+wpd.summary.substring(0,135)+"...");divWpd.appendChild(divWpdDescription);var wpdClear=createDiv('clear');divWpd.appendChild(wpdClear);var wpdDistance=createDiv('wpdDistance');wpdDistance.innerHTML='<img src="/images/device4.png" height="20px">&nbsp;&nbsp;a circa '+wpd.distance+'mt.';wpdDistance.setAttribute('onclick','selectWikiPoiWalk('+wpd.id+','+wpd.distance+',\''+wpd.title+'\','+wpd.pointLatitude+','+wpd.pointLongitude+','+wpd.latitude+','+wpd.longitude+',\''+'['+wpd.pointLineNumber+']'+wpd.pointName+'\');');divWpd.appendChild(wpdDistance);routeWalkaPiediWikiPoi=createDiv('routeWalkDirectionStyle','aPiediWikiPoi'+wpd.id);divWpd.appendChild(routeWalkaPiediWikiPoi);lastDivStopForWpd.innerHTML=lastDivStopForWpd.innerHTML+'<div class="clear"></div>';}});}
function selectWikiPoiWalk(id,distance,title,aLat,aLon,bLat,bLon,pointName)
{clearWikiPoiExtMarker();if($('#aPiediWikiPoi'+id).css('display')=="none")
{wpExtMarker=getWikiPoiMarker(title,bLat,bLon,distance,pointName);}
RouteByWalkDetail('aPiediWikiPoi'+id,aLat,aLon,bLat,bLon);}
function selectOtherRoute(key)
{var data=theData;var jsonurl="/mi/seloroute";$('#loading').show('fast');$.getJSON(jsonurl,{key:key},function(data){$('#loading').hide('fast');theData=data;if(data.resultCode=="OK")
{drawRoute(data.points,data.routeValue);routeId=data.routeId;var dlgTxt=document.getElementById('permalinkTextArea');dlgTxt.value="http://www.milano-italia.it/route/"+escape(data.routeId).replace(/\+/,'%2B')+"/"+data.routeNormName+".html";}
else
{alert(data.resultMessage);}});}
function newMImage(url,w,h,x,y)
{var myicon=new google.maps.MarkerImage(url,new google.maps.Size(w,h),new google.maps.Point(0,0),new google.maps.Point(x,y));return myicon;}
function getStartMarker(lat,lng,address,animation)
{var myLatLng=new google.maps.LatLng(lat,lng);var marker=new google.maps.Marker({position:myLatLng,map:map,shadow:newMImage('http://maps.google.com/intl/it_ALL/mapfiles/shadow50.png',37,34,9,34),icon:newMImage('http://maps.google.com/mapfiles/dd-start.png',20,34,9,34),animation:animation,draggable:true,title:'Partenza: '+address});google.maps.event.addListener(marker,'dragend',function(){var geocoder=new google.maps.Geocoder();geocoder.geocode({'latLng':marker.getPosition()},function(results,status){if(status==google.maps.GeocoderStatus.OK){document.getElementById('apoint').value=results[0].formatted_address;}else{alert("Geocoder failed due to: "+status);}});});return marker;}
function getEndMarker(lat,lng,address,animation)
{var myLatLng=new google.maps.LatLng(lat,lng);var marker=new google.maps.Marker({position:myLatLng,map:map,shadow:newMImage('http://maps.google.com/intl/it_ALL/mapfiles/shadow50.png',37,34,9,34),icon:newMImage('http://maps.google.com/mapfiles/dd-end.png',20,34,9,34),animation:animation,draggable:true,title:'Arrivo: '+address});google.maps.event.addListener(marker,'dragend',function(){var geocoder=new google.maps.Geocoder();geocoder.geocode({'latLng':marker.getPosition()},function(results,status){if(status==google.maps.GeocoderStatus.OK){document.getElementById('bpoint').value=results[0].formatted_address;}else{alert("Geocoder failed due to: "+status);}});});return marker;}
function getStepSelectedMarker(lat,lng)
{var myLatLng=new google.maps.LatLng(lat,lng);var marker=new google.maps.Marker({position:myLatLng,map:map,icon:newMImage('/images/steppinsel.png',20,20,10,10),title:""});return marker;}
function getManArrowMarker(lat,lng,angle)
{var myLatLng=new google.maps.LatLng(lat,lng);var marker=new google.maps.Marker({position:myLatLng,map:map,icon:newMImage('http://maps.gstatic.com/mapfiles/cb/man_arrow-'+angle+'.png',49,52,26,32),title:""});return marker;}
function getStepMarker(stop,idx)
{var myLatLng=new google.maps.LatLng(stop.latitude,stop.longitude);var marker=new google.maps.Marker({position:myLatLng,map:map,icon:newMImage('/images/steppin.png',12,13,6,6),title:"["+stop.lineNumber+"] "+stop.name});google.maps.event.addListener(marker,'click',function(){drawTransitNavigationSwitch(idx);});return marker;}
function getChLnMarker(point)
{var title="";if(point.lineType==1)
{title="tram linea "+point.lineNumber+", "+point.lineName;}
else if(point.lineType==2)
{title="metropolitana linea "+point.lineNumber+", "+point.lineName;}
else if(point.lineType==3)
{title="autobus "+point.lineNumber+", "+point.lineName;}
else if(point.lineType==5)
{title="passante linea "+point.lineNumber+", "+point.lineName;}
var myLatLng=new google.maps.LatLng(point.latitude,point.longitude);var marker=new google.maps.Marker({position:myLatLng,map:map,icon:newMImage('http://static.milano-italia.it/imgman/lbl?pid='+point.id,126,37,64,34),title:title});return marker;}
function getMonumentMarker(point)
{var title="";if(point.lineType==1)
{title="prendi il tram linea "+point.lineNumber+", "+point.lineName;}
else if(point.lineType==2)
{title="prendi la metropolitana linea "+point.lineNumber+", "+point.lineName;}
else if(point.lineType==3)
{title="prendi l'autobus "+point.lineNumber+", "+point.lineName;}
else if(point.lineType==5)
{title="prendi il passante linea "+point.lineNumber+", "+point.lineName;}
var myLatLng=new google.maps.LatLng(point.latitude,point.longitude);var marker=new google.maps.Marker({position:myLatLng,map:map,icon:newMImage('http://static.milano-italia.it/imgman/lbl?pid='+point.id,126,37,64,34),title:title});return marker;}
function getWikiPoiNumMarker(num,wikipoi)
{var myLatLng=new google.maps.LatLng(wikipoi.latitude,wikipoi.longitude);var marker=new google.maps.Marker({position:myLatLng,map:map,icon:newMImage('http://static.milano-italia.it/imgman/lblwpn?num='+num,30,38,14,34),title:wikipoi.title});return marker;}
function getWikiPoiMarker(title,latitude,longitude,distance,stopName)
{var myLatLng=new google.maps.LatLng(latitude,longitude);var marker=new google.maps.Marker({position:myLatLng,map:map,icon:newMImage('http://static.milano-italia.it/imgman/lblwp?wpn='+title+'&dst='+distance+'&stnm='+stopName,180,41,3,18),title:title});return marker;}
function drawRoutePolyline(markerList)
{var latLngArray=new Array();for(i=0;i<markerList.length;i++)
{latLngArray.push(markerList[i].getPosition());}
var gline1=new google.maps.Polyline({path:latLngArray,strokeColor:"#ffffff",strokeOpacity:0.9,strokeWeight:7,map:map});routePolyline.push(gline1);var gline2=new google.maps.Polyline({path:latLngArray,strokeColor:"#4499cc",strokeOpacity:0.9,strokeWeight:3,map:map});routePolyline.push(gline2);}
function drawWalkAndDrivingPolyline(latLngArray)
{var gline2=new google.maps.Polyline({path:latLngArray,strokeColor:"#333333",strokeOpacity:0.9,strokeWeight:3,map:map});walkPolyline.push(gline2);}
function getNumberMarker(latitude,longitude,number,address)
{var myLatLng=new google.maps.LatLng(latitude,longitude);var marker=new google.maps.Marker({position:myLatLng,map:map,shadow:newMImage('http://www.google.com/mapfiles/shadow50.png',37,34,9,34),icon:newMImage('http://maps.google.it/intl/it_it/mapfiles/icon_yellow'+number+'.png',20,34,9,34),title:address});google.maps.event.addListener(marker,"click",function(){marker.openInfoWindowHtml(address);});return marker;}
function handleNoFlash(errorCode){if(errorCode==603){alert("Error: Flash doesn't appear to be supported by your browser");return;}}
function gup(name)
{name=name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");var regexS="[\\?&]"+name+"=([^&#]*)";var regex=new RegExp(regexS);var results=regex.exec(window.location.href);if(results==null)
return"";else
return results[1];}
function de_ra(degree){return((eval(degree))*(Math.PI/180));}
var degreesPerRadian=180.0/Math.PI;function bearing(from,to){var lat1=de_ra(from.lat());var lon1=de_ra(from.lng());var lat2=de_ra(to.lat());var lon2=de_ra(to.lng());var angle=-Math.atan2(Math.sin(lon1-lon2)*Math.cos(lat2),Math.cos(lat1)*Math.sin(lat2)-Math.sin(lat1)*Math.cos(lat2)*Math.cos(lon1-lon2));if(angle<0.0)
angle+=Math.PI*2.0;angle=angle*degreesPerRadian;angle=angle.toFixed(1);return angle;}
function getArrowMarker(p1,p2)
{var dir=bearing(p1,p2);var dir=Math.round(dir/3)*3;while(dir>=120){dir-=120;}
var myLatLng=new google.maps.LatLng(p1.lat(),p1.lng());var marker=new google.maps.Marker({position:myLatLng,map:map,icon:newMImage('http://www.google.com/intl/en_ALL/mapfiles/dir_'+dir+'.png',24,24,12,12),title:''});return marker;}
function getWalkOrCarMarker(lat,lng,idx)
{var myLatLng=new google.maps.LatLng(lat,lng);var marker=new google.maps.Marker({position:myLatLng,map:map,icon:newMImage('/images/steppin.png',12,13,6,6),title:""});google.maps.event.addListener(marker,'click',function(){drawWalkNavigationSwitch(idx);});return marker;}
function gotoWikipedia(title)
{window.open("http://it.wikipedia.org/wiki/"+title,"wikiwindow");}
