var markersArray = [];
var map;
var infowindow;
var localtion;

var directionDisplay;
var directionsService;
var stepDisplay;

function initialize() {
	 // Instantiate a directions service.
    directionsService = new google.maps.DirectionsService();

	myLatlng  = new google.maps.LatLng(-17.697, -50.644);
	var myOptions = {
		zoom: 4,
		center: myLatlng ,
		mapTypeControl: true,
		mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU},
		navigationControl: true,
		navigationControlOptions: {style: google.maps.NavigationControlStyle.SMALL},

		mapTypeId: google.maps.MapTypeId.ROADMAP
	};

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

}

function moveTo(lt,lg,name,html_desc) {
	$('.end .ctn-mapa').css('display','block');

	//alert(markersArray.lenght);
	
	/* clear marker */
	if (markersArray) { for (i=0;i<markersArray;i++) { markersArray[i].setMap(null);	}}

	if(infowindow) infowindow.close();
	
	localtion = new google.maps.LatLng(lt,lg);
	map.setCenter(localtion);
	//map.panTo(localtion);
	map.setCenter(localtion);
	map.setZoom(16);

	var contentString = '<div class="bodyContent">'+html_desc+'</div>';

	infowindow = new google.maps.InfoWindow({
		content: contentString
	});

	marker = new google.maps.Marker({
		position: localtion,
		map: map,
		title: name
	});
	
	markersArray.push(marker);

	google.maps.event.addListener(marker, 'click', function() {
		infowindow.open(map,marker);
	});

	infowindow.open(map,marker);	
	
	// Create a renderer for directions and bind it to the map.
    var rendererOptions = {
      map: map
    }
    directionsDisplay = new google.maps.DirectionsRenderer(rendererOptions)
    
    // Instantiate an info window to hold step text.
    stepDisplay = new google.maps.InfoWindow();
}

function calcRoute(rota) {
  
    /* clear marker */
	//if (markersArray) { for (i in markersArray) { markersArray[i].setMap(null);	}}

    // Retrieve the start and end locations and create
    // a DirectionsRequest using WALKING directions.
    //var start = document.getElementById("start").value;
    
    
   // var start = new google.maps.LatLng(-30.074869, -51.188521);
    var start = rota;
    var end = localtion;
  	//var end = new google.maps.LatLng(37.7683909618184, -122.51089453697205);

    
    var request = {
        origin: start,
        destination: end,
        travelMode: google.maps.DirectionsTravelMode.DRIVING
    };

    // Route the directions and pass the response to a
    // function to create markers for each step.
    directionsService.route(request, function(response, status) {
      if (status == google.maps.DirectionsStatus.OK) {
       // var warnings = document.getElementById("warnings_panel");
	    // warnings.innerHTML = "<b>" + response.routes[0].warnings + "</b>";
        directionsDisplay.setDirections(response);
        //showSteps(response);
      }
    });
    
  }

  function showSteps(directionResult) {
    // For each step, place a marker, and add the text to the marker's
    // info window. Also attach the marker to an array so we
    // can keep track of it and remove it when calculating new
    // routes.
    var myRoute = directionResult.routes[0].legs[0];

    for (var i = 0; i < myRoute.steps.length; i++) {
      var marker = new google.maps.Marker({
        position: myRoute.steps[i].start_point, 
        map: map
      });
      attachInstructionText(marker, myRoute.steps[i].instructions);
      markersArray[i] = marker;
    }
  }

  function attachInstructionText(marker, text) {
    google.maps.event.addListener(marker, 'click', function() {
      // Open an info window when the marker is clicked on,
      // containing the text of the step.
      stepDisplay.setContent(text);
      stepDisplay.open(map, marker);
    });
  }

  
  function checkRoute() {
  	var msg 	= '';
  	var address = $('#q_address').val();
  	var city 	= $('#q_city').val();
  	var state 	= $('#q_state').val();
  	
  	if(address == '' || address == 'endereço') 	msg += '- Digite o endereço\n';
  	if(city == '' || city == 'cidade')	 		msg += '- Digite a cidade\n';
  	if(state == '' || state == 'estado') 		msg += '- Digite o estado\n';
  		
  	if(msg != '') {
  		alert('Os seguintes campo encontram-se com problemas: \n\n'+msg);
  	} else {
  		var rota = address+', '+city+' '+state;
  		calcRoute(rota);
  	}  	
  }
  
