//<![CDATA[
function gob(e){if(typeof(e)=='object')return(e);if(document.getElementById)return(document.getElementById(e));return(eval(e))}
var map;
var polyShape;
var textArray = [];
var startMarker;
var polyPoints;
var toolID = 2;
var adder = 0;
var outerPoints;
var outerShape;
var it;
var outerArray = [];
var outerArrayLength = 0;
var innerArray = [];
var innerArrayLength = 0;
var polylinecolorCur = "#ff0000";
var polylineopacityCur = 1.0;
var polylineweightCur = 2;
var polylinecolor = "#ff0000";
var polylineopacity = 1.0;
var polylineweight = 2;
var polygoncolorCur = "#ff0000";
var polygonopacityCur = 0.8;
var polygonweightCur = 3;
var polygonFillcolorCur = "#ff0000";
var polygonFillopacityCur = 0.35;
var polygoncolor = "#ff0000";
var polygonopacity = 0.8;
var polygonweight = 3;
var polygonFillcolor = "#ff0000";
var polygonFillopacity = 0.35;
var geocoder;

 
function initmap(valore,cox,coy){
    geocoder = new google.maps.Geocoder();
    var latlng = new google.maps.LatLng(43, 12);
    if((cox!="")&&(cox != null)){
                var latlng = new google.maps.LatLng(cox, coy);
                
            }
    document.getElementById("toolchoice").style.position = 'relative';
    document.getElementById("toolchoice").style.top = '-897px';
    document.getElementById("toolchoice").style.left = '80px';
    document.getElementById("toolchoice").style.visibility = 'hidden';
    document.getElementById("toolchoice").style.height = '0px';
    if(valore!=""){
      if (valore!="mask"){
        
            codeAddress(valore);
              var myOptions = {
              zoom: 4,
              center: latlng,
              draggableCursor: 'default',
              draggingCursor: 'pointer',
              mapTypeControl: true,
              mapTypeControlOptions:{
              style: google.maps.MapTypeControlStyle.DROPDOWN_MENU
                },
              mapTypeId: google.maps.MapTypeId.ROADMAP
              };
        }else{
            codeAddress(valore);
              var myOptions = {
              zoom: 1,
              center: latlng,
              draggableCursor: 'default',
              draggingCursor: 'pointer',
              mapTypeControl: true,
              mapTypeControlOptions:{
                style: google.maps.MapTypeControlStyle.DROPDOWN_MENU
                },
              mapTypeId: google.maps.MapTypeId.ROADMAP
              };
        }
      }else{
         var myOptions = {
              zoom: 12,
              center: latlng,
              draggableCursor: 'default',
              draggingCursor: 'pointer',
              mapTypeControl: true,
              mapTypeControlOptions:{
                style: google.maps.MapTypeControlStyle.DROPDOWN_MENU
                },
              mapTypeId: google.maps.MapTypeId.ROADMAP
              };
      }
    
    
    
    map = new google.maps.Map(gob("map_canvas"),myOptions);
    if((cox!="")&&(cox != null)){
        creaMarker2(cox,coy);
    }
    if (document.getElementById("espandi").style.visibility=="hidden"){
      espandi();
      }
    preparePolyline();
    google.maps.event.addListener(map, 'click', addLatLng);
    
}


function codeAddress(paese) {
    if (paese){    
        var address = paese;
      } else {
        var address = document.getElementById("indirizzo").value;
      clearMap();    
      }
      if(address != ""){
     var zoom = document.getElementById("zoom").value;
        if (geocoder) {
          geocoder.geocode( { 'address': address}, function(results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
              map.setCenter(results[0].geometry.location);
              if (zoom==12) map.setZoom(12);
              if (zoom==15) map.setZoom(15);
              if (zoom==19) map.setZoom(19);
            } else {
              alert("Geocode was not successful for the following reason: " + status);
            }
          });
        }
      }
  }


function preparePolyline(){
    polyPoints = new google.maps.MVCArray();
    var polyOptions = {
        strokeColor: polylinecolorCur,
        strokeOpacity: polylineopacityCur,
        strokeWeight: polylineweightCur};
    polyShape = new google.maps.Polyline(polyOptions);
    polyShape.setMap(map);
    polyShape.setPath(new google.maps.MVCArray([polyPoints]));
}
 
function preparePolygon(){
    polyPoints = new google.maps.MVCArray();
    var polyOptions = {
        strokeColor: polygoncolorCur,
        strokeOpacity: polygonopacityCur,
        strokeWeight: polygonweightCur,
        fillColor: polygonFillcolorCur,
        fillOpacity: polygonFillopacityCur};
    polyShape = new google.maps.Polygon(polyOptions);
    polyShape.setMap(map);
    polyShape.setPaths(new google.maps.MVCArray([polyPoints]));
}
 
function addLatLng(point){
    polyPoints.insertAt(polyPoints.length, point.latLng);
    if(polyPoints.length == 1) setstartMarker(point);
    if(adder == 0) logCode(point);
    if(adder == 1){
        outerArray[polyPoints.length] = point.latLng.lat().toFixed(6) + ',' + point.latLng.lng().toFixed(6)+')';
        outerArrayLength++;
    }
    if(adder == 2){
        innerArray[polyPoints.length] = point.latLng.lat().toFixed(6) + ', ' + point.latLng.lng().toFixed(6)+')';
        innerArrayLength++;
    }
}
 
function setstartMarker(point){
    startMarker = new google.maps.Marker({
        position: point.latLng,
        map: map});
    startMarker.setTitle("#" + polyPoints.length);
}
 
function logCode(point){  // point.latLng.toUrlValue() may be used, renders without space after comma
    if (point==0){
    //textArray[polyPoints.length] = ''+ point.latLng.lat().toFixed(6) + ',' + point.latLng.lng().toFixed(6)+'';
    gob('coords1').value = '';
    for(var i=1; i<=polyPoints.length; i++){
        if(i == polyPoints.length){
            gob('coords1').value += textArray[i] + '\n';
        }else{
            gob('coords1').value += textArray[i] + ',\n';
        }
    }
    if (polyPoints.length==0){
      startMarker.setMap(null);
      }
    if(toolID == 2){
        gob('coords1').value += '';
        var options = '';
        gob('coords1').value += options;
        gob('coords1').value +='';
    }
    if(toolID == 3){
        gob('coords1').value += '';
        var options = '';
        gob('coords1').value += options;
        gob('coords1').value +='';
    }
  
  }  
    
    textArray[polyPoints.length] = ''+ point.latLng.lat().toFixed(6) + ',' + point.latLng.lng().toFixed(6)+'';
    gob('coords1').value = '';
    for(var i=1; i<=polyPoints.length; i++){
        if(i == polyPoints.length){
            gob('coords1').value += textArray[i] + '\n';
        }else{
            gob('coords1').value += textArray[i] + ',\n';
        }
    }
    if(toolID == 2){
        gob('coords1').value += '';
        var options = '';
        gob('coords1').value += options;
        gob('coords1').value +='';
    }
    if(toolID == 3){
        gob('coords1').value += '';
        var options = '';
        gob('coords1').value += options;
        gob('coords1').value +='';
    }
}
 
function setTool(){
    if(toolID == 2){
        gob('coords1').value = '';
        clearMap();
        gob('polygonstuff').style.visibility="hidden";
    }
    if(toolID == 3){
        gob('coords1').value = '';
        clearMap();
        gob('polygonstuff').style.visibility="hidden";
    }
}
 
// Clear current Map
function clearMap(){
    document.getElementById("coords1").value="";
    if(startMarker) startMarker.setMap(null);
    if(polyShape) polyShape.setMap(null);
    if(it) it.setMap(null);
    textArray = [];
    polyPoints = [];
    outerArrayLength = 0;
    innerArrayLength = 0;
    adder = 0;
    //if(toolID != 3) gob('polygonstuff').style.visibility="visible";
    if(toolID == 2) preparePolyline();
    if(toolID == 3){
        gob('stepdiv').innerHTML = "Step 0";
        preparePolygon();
    }
}
 
function deleteLastPoint(){
    if(!it){
        textArray[polyPoints.length]=null;
        polyPoints = polyShape.getPath();
        if(polyPoints.length > 0){
          polyPoints.removeAt(polyPoints.length-1);
          var ultimo=0;
          logCode(ultimo);
          }
        if(polyPoints.length == 0 && startMarker){
          startMarker.setMap(null);
          var ultimo=0;
          logCode(ultimo);
          clearMap();
          }
    }
}
function counter(num){
    return adder = adder + num;
}

function closethis(name){
    gob(name).style.visibility = 'hidden';
}
function showthis(name){
    gob(name).style.visibility = 'visible';
}

function espandi(){
  document.getElementById("map_canvas").style.position = 'fixed';
  document.getElementById("map_canvas").style.top = '0px';
  document.getElementById("map_canvas").style.left = '0px'; 
  document.getElementById("map_canvas").style.width = '100%';
  document.getElementById("map_canvas").style.height = '100%';

  google.maps.event.trigger(map, 'resize');
  }
  
function expand(){
  document.getElementById("map_canvas").style.position = 'fixed';
  document.getElementById("map_canvas").style.top = '0px';
  document.getElementById("map_canvas").style.left = '0px';
  document.getElementById("map_canvas").style.width = '100%';
  document.getElementById("map_canvas").style.height = '100%';
  document.getElementById("ricerca").style.position = 'fixed';
  document.getElementById("ricerca").style.top = '0px';
  document.getElementById("ricerca").style.left = '101px';
  document.getElementById("toolchoice").style.position = 'fixed';
  document.getElementById("toolchoice").style.top = '45px';
  document.getElementById("toolchoice").style.left = '101px';
  document.getElementById("minimizza").style.visibility = 'visible';
  document.getElementById("minimizza").style.position = 'fixed';
  var left=screen.width-155;
  document.getElementById("minimizza").style.top = '0px';
  document.getElementById("minimizza").style.left = left+'px';
  document.getElementById("minimizza").style.zIndex = 10;
  document.getElementById("espandi").style.visibility = 'hidden';
  google.maps.event.trigger(map,'resize');
  }

function riduci(){
  document.getElementById("map_canvas").style.position = 'relative';
  document.getElementById("map_canvas").style.width = '700px';
  document.getElementById("map_canvas").style.height = '500px';
  document.getElementById("map_canvas").style.top = '-40px';
  document.getElementById("minimizza").style.visibility = 'hidden';
  document.getElementById("espandi").style.visibility = 'visible';
  document.getElementById("espandi").style.position = 'relative';
  document.getElementById("espandi").style.top = '-10px';
  document.getElementById("espandi").style.left = '550px';
  document.getElementById("ricerca").style.position = 'relative';
  document.getElementById("ricerca").style.top = '14px';
  document.getElementById("ricerca").style.left = '80px';
  }

function resize(){
  document.getElementById("map_canvas").style.position = 'relative';
  document.getElementById("map_canvas").style.width = '700px';
  document.getElementById("map_canvas").style.height = '500px';
  document.getElementById("map_canvas").style.top = '0px';
  document.getElementById("minimizza").style.visibility = 'hidden';
  document.getElementById("espandi").style.visibility = 'visible';
  document.getElementById("espandi").style.position = 'relative';
  document.getElementById("espandi").style.top = '30px';
  document.getElementById("espandi").style.left = '570px';
  document.getElementById("ricerca").style.position = 'relative';
  document.getElementById("ricerca").style.top = '80px';
  document.getElementById("ricerca").style.left = '82px';
  }

function setMode(mode){
  if (mode==2){
    document.getElementById("toolchoice").value=2;
    toolID=2;
    setTool();       
    }
  if (mode==3){
    document.getElementById("toolchoice").value=3;
    toolID=3;
    setTool();    
    }
  }
//]]>
