var NO_NEARBY_PANO = 600;
var FLASH_UNAVAILABLE = 603;
var G_GEO_SUCCESS             = 200;
var G_GEO_BAD_REQUEST         = 400;
var G_GEO_SERVER_ERROR        = 500;
var G_GEO_MISSING_QUERY       = 601;
var G_GEO_MISSING_ADDRESS     = 601;
var G_GEO_UNKNOWN_ADDRESS     = 602;
var G_GEO_UNAVAILABLE_ADDRESS = 603;
var G_GEO_UNKNOWN_DIRECTIONS  = 604;
var G_GEO_BAD_KEY             = 610;
var G_GEO_TOO_MANY_QUERIES    = 620;
var geocoder = null;
var svOverlay = null;
var pano = null;
var panoClient = null;
var hasFlash = true;
var map = null;
var marker = null;
var arrMarker = new Array();
var objOutput = null;
var searchIcon = null;
function handleErrorStreetView(errorCode) {
if (errorCode == FLASH_UNAVAILABLE) {
hasFlash = false;
CloseStreetModal();
alert("Errore: Flash sembra non essere supportato dal tuo Browser.");
return;} else if (errorCode == NO_NEARBY_PANO) {
CloseStreetModal();
return;}}
function ClearPano() {
if (pano != null) {
pano.remove();
pano = null;}}
function CloseStreetModal() {
ClearPano();
$j.modal.close();}
function OpenStreetModal() {
$j('div#pnlPano').modal();}
function initMap(oOutput, oWindow) {
objOutput = oOutput;
map = new GMap2(document.getElementById("map"));
pano = new GStreetviewPanorama(document.getElementById("pano"));
panoClient = new GStreetviewClient();
GEvent.addListener(pano, "error", handleErrorStreetView);
geocoder = new GClientGeocoder();
searchIcon = createSearchIconMarker();
oWindow.unload(GUnload);}
function createSearchIconMarker() {
var blueIcon = new GIcon();
blueIcon.image = "/App_themes/DefaultUI/Images/googleMaps/coldmarker.png";
blueIcon.shadow = "/App_themes/DefaultUI/Images/googleMaps/shadow50.png";
blueIcon.iconSize = new GSize(42, 40);
blueIcon.shadowSize = new GSize(63, 40);
blueIcon.iconAnchor = new GPoint(9, 34);
blueIcon.infoWindowAnchor = new GPoint(9, 2);
blueIcon.infoShadowAnchor = new GPoint(18, 25);
blueIcon.transparent = "/App_themes/DefaultUI/Images/googleMaps/markerTransparent.png";
return blueIcon;}
function GetGeoIp(obj) {
if (GBrowserIsCompatible()) {
var latlng = new GLatLng(obj.payload.latitude, obj.payload.longitude);
map.setCenter(latlng, 8);
svOverlay = new GStreetviewOverlay();
map.addOverlay(svOverlay);
map.setUIToDefault();
GetCodeData(null, latlng);
GEvent.addListener(map, "click", GetCodeData);}}
function GetCodeData(overlay, latlng) {
if (latlng) {
geocoder.getLocations(latlng, function(addresses) {
if (addresses.Status.code != G_GEO_SUCCESS) {
alert("Impossibile recuperare l'indirizzo per il punto cliccato");}
else {
var address = addresses.Placemark[0].AddressDetails.Country;
var coords = addresses.Placemark[0].Point.coordinates;
var natName = address.CountryNameCode;
if (natName == 'IT') {
var regName = address.AdministrativeArea.AdministrativeAreaName;
var provName = '';
var cityName = '';
var CAP = '';
try {
provName = address.AdministrativeArea.SubAdministrativeArea.SubAdministrativeAreaName} catch (e) {
provName = '';}
try {
cityName = address.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName} catch (e) {
cityName = '';}
try {
if (address.AdministrativeArea.SubAdministrativeArea.Locality.PostalCode)
CAP = address.AdministrativeArea.SubAdministrativeArea.Locality.PostalCode.PostalCodeNumber;} catch (e) {
CAP = '';}
objOutput.text(regName+'> '+provName+' > '+cityName);
if (marker != null) { map.removeOverlay(marker); }
marker = new GMarker(latlng, searchIcon);
map.addOverlay(marker);} else {
alert("E' possibile prelevare luoghi solo presenti in Italia");}}});}}
function showDetail(indexMarker, lat, lng) {
var latlng = new GLatLng(lat, lng);
map.setCenter(latlng, 15);
arrMarker[indexMarker].marker.openInfoWindowHtml(arrMarker[indexMarker].html);}
function showAddress(row, panelID) {
$j(panelID).html('');
var check = typeof (row);
if (check != null && check != 'undefined') {
var search = "Italia&gt; "+row.regione+"&gt;"+row.city;
if (row.zona != '') search+= "&gt;"+row.zona;
if (row.via != '') search+= "&gt;"+row.via;
geocoder.getLocations(search,
function(result) {
if (
result.Status.code == G_GEO_SUCCESS ||
result.Status.code == G_GEO_UNKNOWN_ADDRESS) {
check = typeof (result.Placemark);
if (check != null && check != 'undefined') {
if (result.Placemark.length > 0) {
var address = result.Placemark[0].AddressDetails.Country;
var cityName = '';
try {
cityName = address.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName} catch (e) {
cityName = '';}
if (trim(cityName.toLowerCase()) == trim(row.city.toLowerCase())) {
if (marker != null) {
map.removeOverlay(marker);
marker = null;}
var ViaZona = "";
if (row.zona != '') {
if (row.zona.indexOf('/', 0) !=-1)
ViaZona+= "<b>"+row.zona.split('/')[0]+"</b><br />";
else
ViaZona+= "<b>"+row.zona+"</b><br />"}
if (row.via != '') {
if (row.via.indexOf('/', 0) !=-1)
ViaZona+= "<b>"+row.via.split('/')[0]+"</b><br />";
else
ViaZona+= "<b>"+row.via+"</b><br />"}
var descr =
"<div style='width:250px; height:150px; padding:10px;'>"+
"<b>"+row.city+"</b><br />"+
ViaZona+
"<br />"+
"<div style='width:230px; height:90px; overflow:auto;'>"+
row.description+
"</div>"+
"</div>";
var latlng = new GLatLng(result.Placemark[0].Point.coordinates[1], result.Placemark[0].Point.coordinates[0]);
var m = new GMarker(latlng);
var hDC = GEvent.addListener(m, "dblclick", function() {
if (hasFlash) {
panoClient.getNearestPanoramaLatLng(
latlng,
function(ll) {
if (ll != null) {
ClearPano();
pano = new GStreetviewPanorama(document.getElementById("pano"));
pano.setLocationAndPOV(latlng);
OpenStreetModal();}})}});
var hC = GEvent.addListener(m, "click", function() {
m.openInfoWindowHtml(descr);});
map.addOverlay(m);
arrMarker.push({ marker: m, handlerClick: hC, handlerDoubleClick: hDC, html: descr });
var indexMarker = arrMarker.length-1;
var HTMLLatLong = '"'+latlng.lat()+'","'+latlng.lng()+'"';
var HTMLLink = "<a href='#mappa' onclick='javascript:showDetail("+indexMarker+","+HTMLLatLong+")'>visualizza sulla mappa</a>";
$j(panelID).html(HTMLLink);}}}}});}}
function clearSearchMarker() {
for (var i = 0; i < arrMarker.length; i++) {
GEvent.removeListener(arrMarker[i].handlerClick);
GEvent.removeListener(arrMarker[i].handlerDoubleClick);
map.removeOverlay(arrMarker[i].marker);}
arrMarker.length = 0;}
