//Maps plugin for Callejero
  var bounds;
  var directionDisplay;
  var directionsService = new google.maps.DirectionsService();
  var map;
  var geocoder;
  var marker;
  var end;
  var image = '/images/icon.marker.png';
  var msg;
  var markerImage;
  var values;
  var markers;


  function initialize() {
    directionsDisplay = new google.maps.DirectionsRenderer();
    directionsDisplay.setPanel(document.getElementById("route-list")); 
    geocoder = new google.maps.Geocoder();
    markerImage = new google.maps.MarkerImage(image);
    markers = Array();

    var myOptions = {
      zoom: 15,
      center: latlng,
      mapTypeControl: true,
      mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU,
			      position: google.maps.ControlPosition.TOP_RIGHT
      },
      navigationControl: true,
      navigationControlOptions: {style: google.maps.NavigationControlStyle.SMALL,
				position: google.maps.ControlPosition.RIGHT
      },
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };

    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    directionsDisplay.setMap(map);

    google.maps.event.addListener(map, 'idle', function(event) {
       getAdsQuadrant(); 
    });
//     marker = new google.maps.Marker({
//         position: latlng,
//         map: map,
//         icon: markerImage
//     });
//     msg = "Tu ubicación actual";
//     attach_message(marker, msg);
       
  }

  function get_location()
  {
    var markerImage = new google.maps.MarkerImage(image);
    var province = document.getElementById("provinces-list").value;
    var town = document.getElementById("tf1").value;
    var address = document.getElementById("tf2").value;
    var number = document.getElementById("tf3").value;

    if(number != ""){
      address += " nº "+number;
    }
//     Procesamiento del formulario
    if(address != ""){
      map.setZoom(16);

    }
    else{
      map.setZoom(13);
    }
    totalAddress = address +", "+town+" "+province;



    if (geocoder) {

      geocoder.geocode( { 'address': totalAddress}, function(results, status) {

	if (status == google.maps.GeocoderStatus.OK) {

	  //map.setCenter(results[0].geometry.location);

	  if (marker == null){

	    marker = new google.maps.Marker({
	      position: results[0].geometry.location,
	      map: map,
	      icon: markerImage
	      });
	  }
	  else {
	    marker.setPosition(results[0].geometry.location);
	  }
        }
        else {
          alert("Geocode was not successful for the following reason: " + status);
        }
        attach_message(marker);
      });
    }
  }


  function clear_route() {

         $("#route-list").hide();
         $("#route-form").show();

  }


  function get_route()
  {
    var start = document.getElementById("start-route").value;
    end = document.getElementById("end-route").value;
    var request = {
        origin:start,
        destination:end,
        travelMode: google.maps.DirectionsTravelMode.DRIVING
    };
    directionsService.route(request, function(response, status) {
      if (status == google.maps.DirectionsStatus.OK) {
         //alert(response.routes[0].legs[0].steps[1].instructions); 
         $("#route-form").hide(); 
         $("#route-list").show(); 
         var i=0;
         var innerString = '';
         /*for (i=0;i<response.routes[0].legs[0].steps.length;i++) {
            innerString = innerString + "<li>" + response.routes[0].legs[0].steps[i].instructions  + " " + response.routes[0].legs[0].steps[i].distance.text +  "</li>"; 
         }
         $("#route-list #list").html(innerString);*/ 
         directionsDisplay.setDirections(response);
         //var button = '<input type="button" onclick="clear_route()" value="Nueva ruta">';
         $("#route-list").append(button);  
       }
    });
//     setTimeout("moveTo()", 2000);
  }

    function moveTo(point)
  {
    if (geocoder) {
      geocoder.geocode( { 'address': end}, function(results, status) {
      marker.setPosition(results[0].geometry.location);
      });
      }
  }

  function attach_message(marker, content){
      var message = content;

      var info = new google.maps.InfoWindow({
          content: message
        });
        google.maps.event.addListener(marker, 'click', function()
      {
        info.open(map,marker);
      });


  }

  function setMarkers(map, locations)
  {
    for (var i = 0; i < locations.length; i++)
    {
      var points = locations[i];
      var myLatLng = new google.maps.LatLng(points['lat'], points['long']);
      var marker1 = new google.maps.Marker
      ({
        position: myLatLng,
        map: map,
        icon: '/images/goodies/'+points['category']+'.png',
        title: points['name'],
        zIndex: points['index']
      });
      markers.push(marker1);
      msg = points['description'];
      attach_message(marker1, msg);
    }
  }

  function setFilterMarkers(values, locations)
  {
    cleanMarkers();
    b = false;
    for (var i = 0; i < locations.length; i++)
    {
      var points = locations[i];
      for(var j = 0; j< values.length; j++)
      {
        if ((points['category'] == values[j]) && (values[j] !== undefined))
        {
          b = true;
          break;
        }
      }
      if(b)
      {
        var myLatLng = new google.maps.LatLng(points['lat'], points['long']);
        var marker1 = new google.maps.Marker
        ({
          position: myLatLng,
          map: map,
          icon: '/images/goodies/'+points['category']+'.png',
          title: points['name'],
          zIndex: points['index']
        });
        markers.push(marker1);
        msg = points['description'];
        attach_message(marker1, msg);
      }
      b = false;
    }
  }


  function getAdsQuadrant() {
 
    bounds = map.getBounds();
     //alert(bounds.getNorthEast().lat() - 0.5); 
    $.getJSON("/json/ads",
    {
     nelat: bounds.getNorthEast().lat(), 
     nelng: bounds.getNorthEast().lng(),
     solat: bounds.getSouthWest().lat(),
     solng: bounds.getSouthWest().lng() 
    },
        function(data){
        ads = data; 
        setMarkers(map, ads);
        /*values = Array();
        $('#map_filter_div input:checked').each(function(i){
          values[i] = $(this).attr("value");
        });
        setFilterMarkers(values, ads);  
        */
    });
 

  }

  function cleanMarkers()
  {
    for(var i=0; i < this.markers.length; i++){
        markers[i].setMap(null);
    }
      markers = new Array();
  }

$(document).ready(function(){
  $('#loc-form').show();
  $('#route-form').hide();
  $('#route-list').hide();
  $('#a-route-form').click(function(){ 
    $('#loc-form,#route-list').hide();
    $('#route-form').show();
  });

  $('#a-loc-form').click(function(){
    $('#loc-form').show();
    $('#route-form,#route-list').hide();
  });
  $('#map_filter_div input:checkbox').click(function(){
    values = Array();
    $('#map_filter_div input:checked').each(function(i){
      values[i] = $(this).attr("value");
    });
    setFilterMarkers(values, ads); 
  });
});


