  var map;
  var markers=[];
  var infowindow;
  //var rendererOptions = {draggable: true};
  //var directionsDisplay = new google.maps.DirectionsRenderer(rendererOptions);
  //var directionsService = new google.maps.DirectionsService();
  var lines=[];
  var maps=[];
  var numMarkers = 0;
  var id_mapa_roteiros='map_canvas_roteiros';
  var id_mapa_produtos='map_canvas';
  var map_centered=false;
  var default_zoom=7;
  var use_cookie=false;

    function MultiDimensionalArray(iRows,iCols)
    {
        var i;
        var j;
        var a = new Array(iRows);
        for (i=0; i < iRows; i++){
            a[i] = new Array(iCols);
        }
        return(a);
    }

    function sleep(milliseconds) {
        console.log('sleep: '+milliseconds);
        var start = new Date().getTime();
        for (var i = 0; i < 1e7; i++) {
            if ((new Date().getTime() - start) > milliseconds){
                break;
            }
        }
    }

  function initialize(id_map,lat,lng,zoom,disableUI) {
    var myOptions = {
      zoom:zoom,
      disableDefaultUI: disableUI,
      mapTypeId: google.maps.MapTypeId.ROADMAP,
      center:   new google.maps.LatLng(lat,lng) //Portugal
    };
    maps[id_map] = new google.maps.Map(document.getElementById(id_map), myOptions);
    map_centered=false;
    google.maps.event.addListener(maps[id_map], 'tilesloaded', function() {
        google.maps.event.trigger(maps[id_map], 'resize');
        if(!map_centered){
            maps[id_map].setCenter(myOptions.center);
            map_centered=true;
        }
    });
  }

  function calcRoute(start,end) {

    var request = {
      origin: start,
      destination: end,
      //waypoints:[{location: "Bourke, NSW"}, {location: "Broken Hill, NSW"}],
      travelMode: google.maps.DirectionsTravelMode.DRIVING
    };
    directionsService.route(request, function(response, status) {
      if (status == google.maps.DirectionsStatus.OK) {
        directionsDisplay.setDirections(response);
      }
    });
  }

  function drawPolygon(id_map,coords){
    bermudaTriangle = new google.maps.Polygon({
      paths: coords,
      strokeColor: "#FF0000",
      strokeOpacity: 0.8,
      strokeWeight: 2,
      fillColor: "#FF0000",
      fillOpacity: 0.35
    });
    bermudaTriangle.setMap(maps[id_map]);
  }

  function drawLine(id_map,coords,color){
    if(color==''){color='#FF0000';}
    var flightPath = new google.maps.Polyline({
      path: coords,
      strokeColor: color,
      strokeOpacity: 1.0,
      strokeWeight: 2
    });
    flightPath.setMap(maps[id_map]);
    lines.push(flightPath);
  }

  function hideOverlays() {
     $('.close_infobox').click();
      if(markers) {
        for (i in markers) {
          markers[i].setVisible(false);
        }
      }
      if(lines) {
        for (i in lines) {
          lines[i].setMap(null);
        }
        lines.length = 0;
      }
    }

    function showOverlays() {
        $('.close_infobox').click();
        if(markers) {
            for (i in markers) {
            markers[i].setVisible(true);
            }
        }
    }

  function deleteOverlays() {
      $('.close_infobox').click();
      if(markers) {
        for (i in markers) {
          markers[i].setMap(null);
        }
        markers.length = 0;
      }
      if(lines) {
        for (i in lines) {
          lines[i].setMap(null);
        }
        lines.length = 0;
      }
    }
  function addMarker(id_map,id_item,latitude,longitude,marker_title,icon,contentString){
        var spot = new google.maps.LatLng(latitude,longitude);
        var marker = new google.maps.Marker({
            position:   spot,
            map:        maps[id_map],
            title:      marker_title,
            icon:       icon,
            html:       contentString
        });
        markers[id_item]=marker;        
        google.maps.event.addListener(marker, 'click', function() {
            var window_opts={
                                alignBottom: true,
                                pixelOffset: new google.maps.Size(-30, -10),
                                infoBoxClearance: new google.maps.Size(20, 20),
                                closeBoxMargin: "10px 10px 0px 0px",
                                closeBoxURL: "/temas/turismoalentejo/images/close.gif"                                
                            };
                            
            if(infowindow == null) {
                $.get('/produtos_caracteristicas/ajax/fillpopup.php?id='+id_item, function(res) {
                    window_opts.content=res;
                    infowindow = new InfoBox(window_opts);
                    marker.infowindow = infowindow;
                    infowindow.open(maps[id_map],marker);                    
                });
            }
            else {
                if(marker.infowindow == null){
                    infowindow.setMap(null);
                    $.get('/produtos_caracteristicas/ajax/fillpopup.php?id='+id_item, function(res) {
                        window_opts.content=res;
                        infowindow = new InfoBox(window_opts);
                        marker.infowindow = infowindow;
                        infowindow.open(maps[id_map],marker);
                    });
                }
                else {
                    infowindow.setMap(null);
                    infowindow = null;
                    marker.infowindow = null;
                }
            }
        });
  }

  function computeTotalDistance(result) {
    var total = 0;
    var myroute = result.routes[0];
    for (i = 0; i < myroute.legs.length; i++) {
      total += myroute.legs[i].distance.value;
    }
    total = total/1000;
    return total;
  }

  $(function(){
    $(document).mousemove(function(e){
        $("#loading").css('top',e.pageY);
        $("#loading").css('left',e.pageX);
        $('#loading #coords').html(e.pageX +', '+ e.pageY);
    });

    $(".ul_boxMapa .checkBoxMapa input[type=checkbox]").click(function(){
       if($(this).is(':checked')){
           /*if($(this).hasClass('ctg_roteiros')){
                $(".ul_boxMapa").find('input.ctg_produtos').attr('checked',true);
           }*/
           $(this).closest('.checkBoxMapa').siblings('ul').find('input[type=checkbox]').attr('checked',true);
       }else{
           $(this).closest('.checkBoxMapa').siblings('ul').find('input[type=checkbox]').removeAttr('checked');
       }
    });

    $("#caixa_pesquisa_mapa #localidade").change(function(){
       $(this).closest('form').find('input[type=submit]').click();
    });
});

var startLoading=function(){
    if($('#loading').length==0){
        $('body').append($('<div id="loading"><img src="/temas/turismoalentejo/images/ajax-loader.gif" alt="Loading..."/></div>'));
    }
    $('#loading').fadeIn();
}
var stopLoading=function(){
    $('#loading').fadeOut();
}
