//*******************************************************************
//* File      : fgpsoftware9.js
//* Creato il : 14/06/2006 - ultimo aggiornamento il 13/07/2009
//* Autore    : Graziano Fasano graziano@fgpsoftware.it
//*
//* Avviso: La riproduzione o distribuzione non autorizzata di queste 
//* pagine o di parte di esse, sarà perseguibile civilmente e 
//* penalmente.
//*******************************************************************

function showAddresses(partenza) { 
// if (geocoder) { 
//  geocoder.getLatLng( 
//   address, 
//   function(point) { 
//    map.setCenter(point, 16); 
//    var marker = new GMarker(point); 
//    map.addOverlay(marker); 
//    marker.openInfoWindowHtml('Breite : '+ point.lat() + '<br>Laenge : ' + point.lng()); 
//   } 
//  ); 
// } 
// location.href = "http://maps.google.it/maps?saddr=" + partenza + "&daddr=39.969210753,18.1176454488&hl=it&ip=151.83.0.96&ie=utf-8"

// showAddresses(parti.partenza.value)
  setDirections(partenza,"39.969226984896416, 18.117570877075195");
}

function filtro(ch){
 if(ch.checked){
  currentdata=new Date();
  var datatime=currentdata.getTime();
  eval(ch.name+"=new GGeoXml(\"http://www.fgpsoftware.it/maps/"+ch.name+"-lecce.kml?\"+datatime);map.addOverlay("+ch.name+");");
 }
 else eval("map.removeOverlay("+ch.name+");");
}

//<![CDATA[
var map, gdir, geocoder2, markerStart, init_route=[], autovelox, carburante, telefonia, ristoranti, discoteche, bar, alberghi;
var WINDOW_HTML='<div align="justify" style="width: 210px; padding-right: 10px; color: #000000; font-family: Arial, sans-serif; font-size: 12px;font-style:italic"><b>Cerca il posto per le indicazioni.</b><br>Sposta l&#39;auto per scegliere una posizione esatta.<\/div>';
var CHOSEN_HTML='<div align="justify" style="width: 210px; padding-right: 10px; color: #000000; font-family: Arial, sans-serif; font-size: 12px;font-style:italic">Hai selezionato questa posizione:<br>Lat <input id="lat" name="lat" size="20" type="text"><br>Lng <input id="lng" name="lng" size="20" type="text"><\/div>';
var    END_HTML='<div class="wmmap"><font face="Verdana" size="2"><b><img border="0" src="http://www.fgpsoftware.it/images/Logo-53.jpg" align="left" hspace="3" vspace="3">FGPSoftware</b><br>Fasano Graziano<br>Via Lombardo Radice, 62<br>73040 Melissano (LE)</font><br><a href="http://www.fgpsoftware.it">www.fgpsoftware.it</a> - <a href="mailto:info@fgpsoftware.it">info@fgpsoftware.it</a><form method="POST" name="parti" onsubmit="trovaIndirizzo();return false"><p align="center"><b>Indicazioni stradali</b><br>Indirizzo di partenza<br><input type="text" name="partenza" id="partenza" class=text type="text" value="Via Gallipoli, 73100 Lecce, Puglia, Italia" style="background-color: #ffffff; font-family: Arial; font-size: 8pt; height: 18; width: 100%" size="20"><input border="0" src="http://www.fgpsoftware.it/temi/1/pulsante18.gif" type="image"></p></form></div>';
var EndPoint=[39.969226984896416, 18.117570877075195];

function InitRoute(route_points){
}

function load(){
 if (GBrowserIsCompatible()){
  map=new GMap2(getId("map"));
  gdir=new GDirections(map,getId("directions"));
  geocoder2 = new GClientGeocoder();
  GEvent.addListener(gdir,"addoverlay",onGDirectionsLoad);
  GEvent.addListener(gdir,"error",handleErrors);
  map.setUIToDefault();
  map.addMapType(G_SATELLITE_3D_MAP);
  map.enableScrollWheelZoom();

  var trafficOptions = {incidents:true};
  trafficInfo = new GTrafficOverlay(trafficOptions);
  map.addOverlay(trafficInfo);

  GEvent.addListener(map,"moveend",function(){
   var center=map.getCenter();
//   var zoom=map.getZoom();
   getId("message").innerHTML=center.toString()+" Zoom: "+map.getZoom().toString();
  });
  map.setCenter(new GLatLng(39.97817244470628,18.122806549072265),13);
  var EndIcon = new GIcon();
  EndIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
  EndIcon.iconSize = new GSize(28, 33);
  EndIcon.shadowSize = new GSize(37, 34);
  EndIcon.iconAnchor = new GPoint(9, 34);
  EndIcon.infoWindowAnchor = new GPoint(9, 2);
  EndIcon.infoShadowAnchor = new GPoint(18, 25);
  EndIcon.image = "http://www.fgpsoftware.it/images/assistente.png"; 
  function importanceOrder (marker,b) {
   return GOverlay.getZIndex(marker.getPoint().lat()) + marker.importance*1000000;
  }
//  var marker = new GMarker(new GLatLng(39.969226984896416, 18.117570877075195),{icon:EndIcon,zIndexProcess:importanceOrder});
  var marker = new GMarker(new GLatLng(EndPoint[0],EndPoint[1]),EndIcon);
  marker.importance=1;
  map.addOverlay(marker);
  GEvent.addListener(marker,"click",function(){
   marker.openInfoWindowHtml(END_HTML);
  });
  marker.openInfoWindowHtml(END_HTML);
//  currentdata=new Date();
//  var datatime=currentdata.getTime();
//  var discoteche=new GGeoXml("http://www.fgpsoftware.it/maps/discoteche-lecce.kml?"+datatime);
//  map.addOverlay(discoteche);
//  var autovelox=new GGeoXml("http://www.fgpsoftware.it/maps/autovelox-lecce.kml?"+datatime);
//  map.addOverlay(autovelox);
//  var ristoranti=new GGeoXml("http://www.fgpsoftware.it/maps/ristoranti-lecce.kml?"+datatime);
//  map.addOverlay(ristoranti);
// distributore carburante
//  trovaIndirizzo();
//  setDirections("Via Gallipoli, 73100 Lecce, Puglia, Italia", "39.969226984896416, 18.117570877075195");
//  showId("button");
  if(window.location.hash!=""){
   var points=window.locationhash.substring(1).split(",");
   var bounds= new GLatLngBounds();
   for(var i=points.length-1;i>0;i-=2){
    var point=new GLatLng(parseFloat(points[i-1],10),parseFloat(points[i],10));
    init_route.push(point);
    bounds.extend(point);
   }
   if(init_route.length>0){
    var zoom=(init_route.length==1)?12:map.getBoundsZoomLevel(bounds);
    map.setCenter(bouns.getCenter(),(zoom<5)?5:zoom);
    InitRoute(init_route);
   } 
  }
  newDiv=document.createElement("div");
  newDiv.id="button";
  newDiv.innerHTML="<div id=\"poi\" onclick=\"Poi();\">Elenco Poi</div>";
//  map.getContainer().appendChild(newDiv);
  getId("maps").appendChild(newDiv);
  cpoi=getId("filtromappa").getElementsByTagName("input");
//  for(var i=0;i<cpoi.length;i++)filtro(cpoi[i]);
filtro(cpoi[0]);
 }
}

function setDirections(fromAddress,toAddress){
 var opts={};
 opts.locale="it";
 opts.getPolyline=true;
// if (document.getElementById("walk").checked) {
//  opts.travelMode = G_TRAVEL_MODE_WALKING; // a piedi
// }
// if (document.getElementById("highways").checked) {
//  opts.avoidHighways = true; // evita autostrade
// }
 gdir.load("from: "+fromAddress+" to: "+toAddress,opts);

// var gLatLngs = new Array(
// new GLatLng(44.489893,11.357846),
// new GLatLng(44.489617,11.358340)
// ); //chiusura Array
// //dirn.getPolyline(false);
// //dirn.getStatus(true);
// //dirn.getDistance(true); 
// gdir.loadFromWaypoints(gLatLngs);
}

function handleErrors(){
 if (gdir.getStatus().code == G_GEO_UNKNOWN_ADDRESS)
  alert("Non è stata trovata nessun corrispondente giografico per l'indirizzo specificato. Ciò può essere dovuto per l'inserimento di un indirizzo nuovo o non corretto.\nError code: " + gdir.getStatus().code);
 else if (gdir.getStatus().code == G_GEO_SERVER_ERROR)
       alert("A geocoding or directions request could not be successfully processed, yet the exact reason for the failure is not known.\n Error code: " + gdir.getStatus().code);
      else if (gdir.getStatus().code == G_GEO_MISSING_QUERY)
            alert("The HTTP q parameter was either missing or had no value. For geocoder requests, this means that an empty address was specified as input. For directions requests, this means that no query was specified in the input.\n Error code: " + gdir.getStatus().code);
           else if (gdir.getStatus().code == G_GEO_BAD_KEY)
                 alert("The given key is either invalid or does not match the domain for which it was given. \n Error code: " + gdir.getStatus().code);
                else if (gdir.getStatus().code == G_GEO_BAD_REQUEST)
                      alert("A directions request could not be successfully parsed.\n Error code: " + gdir.getStatus().code);
                     else alert("An unknown error occurred.");
}

function onGDirectionsLoad(){ 
 var poly = gdir.getPolyline();
// if (poly.getVertexCount() > 200) {
//  alert("Questo itinerario ha troppi vertici.");
//  return;
// }
 var baseUrl = "http://maps.google.com/staticmap?";
 var params = [];
 var markersArray = [];
 markersArray.push(poly.getVertex(0).toUrlValue(5) + ",greena");
 markersArray.push(poly.getVertex(poly.getVertexCount()-1).toUrlValue(5) + ",greenb");
 params.push("markers=" + markersArray.join("|"));
 var polyParams = "rgba:0x0000FF80,weight:5|";
 var polyLatLngs = [];
 for (var j = 0; j < poly.getVertexCount(); j++) {
  polyLatLngs.push(poly.getVertex(j).lat().toFixed(5) + "," + poly.getVertex(j).lng().toFixed(5));
 }
 params.push("path=" + polyParams + polyLatLngs.join("|"));
 params.push("size=300x300");
 params.push("key=ABQIAAAA-R37EefBS57BxmO8rvC4VxSqOOjEUac1XRHzUKHCb2d3I39dpxQR9zHhTEvd1Is4nCisME2WvVXR9A");
}

function trovaIndirizzo(){
 if(geocoder2){
//  document.getElementById('x').value = "";
//  document.getElementById('y').value = "";
  var address=unescape(getId("partenza").value);
//  var address=unescape('via roma, Casarano');
  address=address.replace(/\+/g, ' ') ;
  geocoder2.getLatLng(address,function(point){
   if (!point){
    alert(address + " non trovato");
   }else{
    if (markerStart)map.removeOverlay(markerStart);
    var startIcon = new GIcon();
//    startIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
    startIcon.iconSize = new GSize(33, 24);
//    startIcon.shadowSize = new GSize(37, 34-5);
    startIcon.iconAnchor = new GPoint(9, 24); // centro auto
    startIcon.infoWindowAnchor = new GPoint(9, 2);
    startIcon.infoShadowAnchor = new GPoint(18, 25);
    startIcon.image = "http://www.fgpsoftware.it/temi/1/auto.png";
    markerStart = new GMarker(point,{icon:startIcon, draggable: true});
    map.addOverlay(markerStart);
    GEvent.addListener(markerStart,"dragend",function(){
     markerStart.openInfoWindowHtml(CHOSEN_HTML);
     var newloc=markerStart.getPoint();
     getId("lat").value=newloc.lat();
     getId("lng").value=newloc.lng();
     setDirections(newloc.lat()+", "+newloc.lng(),EndPoint[0]+", "+EndPoint[1]); 
    });
    GEvent.addListener(markerStart, "click", function(){
     markerStart.openInfoWindowHtml(WINDOW_HTML);
    });
    markerStart.openInfoWindowHtml(WINDOW_HTML);
    map.setCenter(point,15);
   }
  });
 }
}

//]]>
