
var map;var percorso;var mgr;var percorsi=[];var eventi=[];var percorsiJSON;var emissionikm=0.20
var myOptionsMap={mapTypeId:google.maps.MapTypeId.ROADMAP,scrollwheel:false,streetViewControl:true};function posizione(lat,lng,paese,citta){this.latitudine=lat;this.longitudine=lng;this.paese=paese;this.citta=citta;this.marker='';}
function percorso(percorso_guid,latpartenza,lngpartenza,paesepartenza,cittapartenza,latarrivo,lngarrivo,paesearrivo,cittaarrivo,periodovalidita,tipomezzo_id,pendolare,contributospese){this.partenza=new posizione(latpartenza,lngpartenza,paesepartenza,cittapartenza);this.arrivo=new posizione(latarrivo,lngarrivo,paesearrivo,cittaarrivo);this.percorso_guid=percorso_guid;this.periodo_validita=periodovalidita
this.tipomezzo_id=tipomezzo_id
this.pendolare=pendolare
this.contributospese=contributospese
this.polyline='';this.gdir='';}
function evento(evento_guid,nome,latitudine,longitudine,paese,citta,periodovalidita){this.luogo=new posizione(latitudine,longitudine,paese,citta);this.evento_guid=evento_guid;this.nome=nome;this.periodo_validita=periodovalidita}
function MostraMarker(indice){var image;var shadow=new google.maps.MarkerImage('http://www.google.com/mapfiles/shadow50.png',new google.maps.Size(37,34),new google.maps.Point(0,0),new google.maps.Point(8,32));var WindowHtml;WindowHtml="<img src='/img/flags/"+percorsi[indice].partenza.paese+".gif'>&nbsp;<b>"+percorsi[indice].partenza.citta+"</b><br/>"
+"<img src='/img/flags/"+percorsi[indice].arrivo.paese+".gif'>&nbsp;<b>"+percorsi[indice].arrivo.citta+"</b>"
+"<div style='margin-top:10px;'>"
+"<img src='/img/ruoloutente/"+percorsi[indice].tipomezzo_id+"_20x20.gif'>"
if(percorsi[indice].pendolare)
WindowHtml+="<img src='/img/ico20x20_pendolare.gif'>"
if(percorsi[indice].contributospese)
WindowHtml+="<img src='/img/ico20x20_spese.gif'>"
+"</div>"
+"<div style='margin-top:10px;'>"+percorsi[indice].periodo_validita+"</div>";var infowindow=new google.maps.InfoWindow({content:WindowHtml});if(percorsi[indice].partenza.latitudine!=null&&percorsi[indice].partenza.longitudine!=null)
{image=new google.maps.MarkerImage('http://www.google.com/mapfiles/icon_greenA.png',new google.maps.Size(24,38),new google.maps.Point(0,0),new google.maps.Point(10,34));var markerpartenza=new google.maps.Marker({position:new google.maps.LatLng(percorsi[indice].partenza.latitudine,percorsi[indice].partenza.longitudine),map:map,shadow:shadow,icon:image});percorsi[indice].partenza.marker=markerpartenza;google.maps.event.addListener(markerpartenza,'click',function(){infowindow.open(map,markerpartenza);});}
if(percorsi[indice].arrivo.latitudine!=null&&percorsi[indice].arrivo.longitudine!=null)
{image=new google.maps.MarkerImage('http://www.google.com/mapfiles/markerB.png',new google.maps.Size(20,34),new google.maps.Point(0,0),new google.maps.Point(10,34));var markerarrivo=new google.maps.Marker({position:new google.maps.LatLng(percorsi[indice].arrivo.latitudine,percorsi[indice].arrivo.longitudine),map:map,shadow:shadow,icon:image});percorsi[indice].arrivo.marker=markerarrivo;google.maps.event.addListener(markerarrivo,'click',function(){infowindow.open(map,markerarrivo);});}}
function MostraPolyline(indice){var pathLatLng=new Array(2);pathLatLng[0]=new google.maps.LatLng(percorsi[indice].partenza.latitudine,percorsi[indice].partenza.longitudine);pathLatLng[1]=new google.maps.LatLng(percorsi[indice].arrivo.latitudine,percorsi[indice].arrivo.longitudine);var polyOptions={geodesic:true,strokeColor:"#3467B6",strokeWeight:6,strokeOpacity:0.9};var directionsService=new google.maps.DirectionsService();var request={origin:pathLatLng[0],destination:pathLatLng[1],travelMode:google.maps.DirectionsTravelMode.DRIVING};directionsService.route(request,function(response,status){if(status==google.maps.DirectionsStatus.OK){var directionsDisplay=new google.maps.DirectionsRenderer({map:map,preserveViewport:true,suppressMarkers:true,polylineOptions:polyOptions});directionsDisplay.setDirections(response);var route=response.routes[0];$("#distanza").html(route.legs[0].distance.text);$("#durata").html(route.legs[0].duration.text);var emissione=Math.round((route.legs[0].distance.value/1000)*emissionikm);$("#emissioni").html(emissione+" Kg");percorsi[indice].gdir=directionsDisplay;}
else
{var poly=new google.maps.Polyline(polyOptions);poly.setPath(pathLatLng);poly.setMap(map);$("#distanza").html('-');$("#durata").html('-');$("#emissioni").html('-');$("#nostrada").show();percorsi[indice].gdir=poly;}});}
function MostraPolylineJSON(indice){var pathLatLng=new Array(2);pathLatLng[0]=new google.maps.LatLng(percorsiJSON[indice].ltp,percorsiJSON[indice].lgp);pathLatLng[1]=new google.maps.LatLng(percorsiJSON[indice].lta,percorsiJSON[indice].lga);var polyOptions={geodesic:true,strokeColor:"#3467B6",strokeWeight:6,strokeOpacity:0.9};var directionsService=new google.maps.DirectionsService();var request={origin:pathLatLng[0],destination:pathLatLng[1],travelMode:google.maps.DirectionsTravelMode.DRIVING};directionsService.route(request,function(response,status){if(status==google.maps.DirectionsStatus.OK){var directionsDisplay=new google.maps.DirectionsRenderer({map:map,preserveViewport:true,suppressMarkers:true,polylineOptions:polyOptions});directionsDisplay.setDirections(response);var route=response.routes[0];$("#distanza").html(route.legs[0].distance.text);$("#durata").html(route.legs[0].duration.text);var emissione=Math.round((route.legs[0].distance.value/1000)*emissionikm);$("#emissioni").html(emissione+" Kg");}
else
{var poly=new google.maps.Polyline(polyOptions);poly.setPath(pathLatLng);poly.setMap(map);$("#distanza").html('-');$("#durata").html('-');$("#emissioni").html('-');$("#nostrada").show();}});}
function GetBoundsPercorsi(array_percorsi){for(var i=0;i<array_percorsi.length;i++){if(i==0){if(array_percorsi[i].partenza.latitudine==null&&array_percorsi[i].partenza.longitudine==null){min_lat=array_percorsi[i].arrivo.latitudine;min_lng=array_percorsi[i].arrivo.longitudine;max_lat=array_percorsi[i].arrivo.latitudine;max_lng=array_percorsi[i].arrivo.longitudine;}
else{min_lat=array_percorsi[i].partenza.latitudine;min_lng=array_percorsi[i].partenza.longitudine;max_lat=array_percorsi[i].partenza.latitudine;max_lng=array_percorsi[i].partenza.longitudine;}}
SetMinLatLng(array_percorsi[i]);SetMaxLatLng(array_percorsi[i]);}
return new google.maps.LatLngBounds(new google.maps.LatLng(min_lat,min_lng),new google.maps.LatLng(max_lat,max_lng));}
function GetBoundsPercorsiJson(percorsiJson){for(var i=0;i<percorsiJson.length;i++)
{if(i==0)
{if((percorsiJson[i].ltp==null)&&(percorsiJson[i].lgp==null))
{min_lat=percorsiJson[i].lta;min_lng=percorsiJson[i].lga;max_lat=percorsiJson[i].lta;max_lng=percorsiJson[i].lga;}
else
{min_lat=percorsiJson[i].ltp;min_lng=percorsiJson[i].lgp;max_lat=percorsiJson[i].ltp;max_lng=percorsiJson[i].lgp;}}
if((percorsiJson[i].ltp!=null)&&(min_lat>percorsiJson[i].ltp))
min_lat=percorsiJson[i].ltp;if((percorsiJson[i].lta!=null)&&(min_lat>percorsiJson[i].lta))
min_lat=percorsiJson[i].lta;if((percorsiJson[i].lgp!=null)&&(min_lng>percorsiJson[i].lgp))
min_lng=percorsiJson[i].lgp;if((percorsiJson[i].lga!=null)&&(min_lng>percorsiJson[i].lga))
min_lng=percorsiJson[i].lga;if((percorsiJson[i].ltp!=null)&&(max_lat<percorsiJson[i].ltp))
max_lat=percorsiJson[i].ltp;if((percorsiJson[i].lta!=null)&&(max_lat<percorsiJson[i].lta))
max_lat=percorsiJson[i].lta;if((percorsiJson[i].lgp!=null)&&(max_lng<percorsiJson[i].lgp))
max_lng=percorsiJson[i].lgp;if((percorsiJson[i].lga!=null)&&(max_lng<percorsiJson[i].lga))
max_lng=percorsiJson[i].lga;}
return new google.maps.LatLngBounds(new google.maps.LatLng(min_lat,min_lng),new google.maps.LatLng(max_lat,max_lng));}
function GetBoundsEventi(eventiJson){for(var i=0;i<eventiJson.length;++i)
{if(i==0)
{min_lat=eventiJson[i].lat;min_lng=eventiJson[i].lng;max_lat=eventiJson[i].lat;max_lng=eventiJson[i].lng;}
if((eventiJson[i].lat!=null)&&(min_lat>eventiJson[i].lat))
min_lat=eventiJson[i].lat;if((eventiJson[i].lng!=null)&&(min_lng>eventiJson[i].lng))
min_lng=eventiJson[i].lng;if((eventiJson[i].lat!=null)&&(max_lat<eventiJson[i].lat))
max_lat=eventiJson[i].lat;if((eventiJson[i].lng!=null)&&(max_lng<eventiJson[i].lng))
max_lng=eventiJson[i].lng;}
return new google.maps.LatLngBounds(new google.maps.LatLng(min_lat,min_lng),new google.maps.LatLng(max_lat,max_lng));}
function SetMinLatLng(percorso){if(percorso.partenza.latitudine!=null&&min_lat>percorso.partenza.latitudine)
min_lat=percorso.partenza.latitudine;if(percorso.arrivo.latitudine!=null&&min_lat>percorso.arrivo.latitudine)
min_lat=percorso.arrivo.latitudine;if(percorso.partenza.longitudine!=null&&min_lng>percorso.partenza.longitudine)
min_lng=percorso.partenza.longitudine;if(percorso.arrivo.longitudine!=null&&min_lng>percorso.arrivo.longitudine)
min_lng=percorso.arrivo.longitudine;}
function SetMaxLatLng(percorso){if(percorso.partenza.latitudine!=null&&max_lat<percorso.partenza.latitudine)
max_lat=percorso.partenza.latitudine;if(percorso.arrivo.latitudine!=null&&max_lat<percorso.arrivo.latitudine)
max_lat=percorso.arrivo.latitudine;if(percorso.partenza.longitudine!=null&&max_lng<percorso.partenza.longitudine)
max_lng=percorso.partenza.longitudine;if(percorso.arrivo.longitudine!=null&&max_lng<percorso.arrivo.longitudine)
max_lng=percorso.arrivo.longitudine;}
var markspolyline=Array();var infoWindow=new google.maps.InfoWindow();function ajaxLoadData(parsObject){$.ajax({type:"GET",url:parsObject.url,data:parsObject.pars,async:parsObject.asyncrono,success:function(jsonData){parsObject.callback(jsonData.objects.markers);}});}
function createStyleMarkerCluster(){var styles=[[{url:'/img/m1.png',height:52,width:53,opt_anchor:[26,26],opt_textColor:'#000000',opt_textSize:11},{url:'/img/m2.png',height:55,width:56,opt_anchor:[28,28],opt_textColor:'#000000',opt_textSize:11},{url:'/img/m3.png',height:65,width:66,opt_anchor:[33,33],textColor:'#000000',opt_textSize:11},{url:'/img/m4.png',height:77,width:78,opt_anchor:[33,33],opt_textColor:'#000000',opt_textSize:11},{url:'/img/m5.png',height:89,width:90,opt_anchor:[33,33],opt_textColor:'#000000',opt_textSize:12}]];return styles;}
function createSingleMarkerCluster(point,icon,pid,mtype){var marker=new google.maps.Marker({position:point,map:map,icon:icon});google.maps.event.addListener(marker,'click',function(){if(mtype=='percorso')MostraPercorsoSuMappa(pid);markerInfoWindow(pid,marker,true);});return marker;}
function GetBoundsFromViewport(viewport){arrVertici=viewport.split("|");var min_lat=parseFloat(arrVertici[0].split(",")[0]);var min_lng=parseFloat(arrVertici[0].split(",")[1]);var max_lat=parseFloat(arrVertici[1].split(",")[0]);var max_lng=parseFloat(arrVertici[1].split(",")[1]);return new google.maps.LatLngBounds(new google.maps.LatLng(min_lat-0.008,min_lng-0.008),new google.maps.LatLng(max_lat+0.008,max_lng+0.008));}
function MostraPercorsoSuMappa(percorso_id){clearMarksPolyline();var parsObjAjax=new Object();parsObjAjax.url='/controller';parsObjAjax.pars={action:"percorso_mostramarkerdettaglio",percorso_id:percorso_id,r:Math.random()};parsObjAjax.callback=DisegnaPercorsoSuMappa;parsObjAjax.asyncrono=false;ajaxLoadData(parsObjAjax);setTimeout('DisegnaPolyline(markspolyline,true)',800);}
function DisegnaPercorsoSuMappa(markersJson){for(i=0;i<markersJson.length;i++)
{percorso_ar=markersJson[i].ar;percorso_id=markersJson[i].id;var point=new google.maps.LatLng(markersJson[i].lat,markersJson[i].lng);if(percorso_ar=="a")
var iconpercorso=new google.maps.MarkerImage('http://labs.google.com/ridefinder/images/mm_20_green.png',new google.maps.Size(12,20),new google.maps.Point(0,0),new google.maps.Point(6,20));else
var iconpercorso=new google.maps.MarkerImage('http://labs.google.com/ridefinder/images/mm_20_red.png',new google.maps.Size(12,20),new google.maps.Point(0,0),new google.maps.Point(6,20));var marker=new google.maps.Marker({position:point,map:map,icon:iconpercorso});marker.setZIndex(2);markspolyline.push(marker);google.maps.event.addListener(marker,'click',function(){MostraPercorsoSuMappa(percorso_id);markerInfoWindow(percorso_id,marker,true);});}}
function markerInfoWindow(percorso_id,marker,distance)
{var url=path_ep+path_lingua+'/controller';var pars={action:"percorso_markerinfowindow",percorso_id:percorso_id,distanze:distance,r:Math.random()};$.getJSON(url,pars,function(jsonData){infoWindow.setContent(jsonData.message);infoWindow.open(map,marker);});}
function DisegnaPolyline(markpercorso,memorizza){var pathLatLng=new Array(2);pathLatLng[0]=markpercorso[0].getPosition();pathLatLng[1]=markpercorso[1].getPosition();var polyOptions={clickable:false,geodesic:true,strokeColor:"#3467B6",strokeWeight:6,strokeOpacity:0.9};var directionsService=new google.maps.DirectionsService();var request={origin:pathLatLng[0],destination:pathLatLng[1],travelMode:google.maps.DirectionsTravelMode.DRIVING};directionsService.route(request,function(response,status){if(status==google.maps.DirectionsStatus.OK){var directionsDisplay=new google.maps.DirectionsRenderer({map:map,preserveViewport:true,suppressMarkers:true,suppressInfoWindows:true,polylineOptions:polyOptions});directionsDisplay.setDirections(response);var route=response.routes[0];$("#distanza").show();$("#distanza").html(route.legs[0].distance.text);$("#durata").show();$("#durata").html(route.legs[0].duration.text);if(memorizza)
markpercorso[2]=directionsDisplay;}
else
{var poly=new google.maps.Polyline(polyOptions);poly.setPath(pathLatLng);poly.setMap(map);$("#distanza").html('-');$("#durata").html('-');$("#nostrada").show();if(memorizza)
markpercorso[2]=poly;}});}
function clearMarksPolyline(){if(infoWindow)infoWindow.close();var markerpoly=markspolyline.shift();while(markerpoly){markerpoly.setMap(null);markerpoly=markspolyline.shift();}}
