var markerCliente;
var markersLojas = [];
var idsLojas = [];
var directions = new GDirections();
var menorTempo = null;
var idLojaMaisRapida = null;
//var debugDuration = '';
			
function handleCliente(response){
	if (response.Placemark.length > 0){
		var place = response.Placemark[0];
		markerCliente = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]);
		setMarkersLojas(enderecosLojasCliente.pop());
	}else{
		alert('Não localizou endereço do cliente.');
	}
}

function handleLoja(response){
	if (response.Placemark.length > 0){
		var place = response.Placemark[0];
		markersLojas.push(new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]));
		if(enderecosLojasCliente.length > 0){
			setMarkersLojas(enderecosLojasCliente.pop());
		}else{
			calculaMenorDuracao();
		}
	}else{
		alert('Não localizou loja no mapa. Redirecionar para escolha manual.');
	}
}

function setMarkersLojas(enderecoObj){
	idsLojas.push(enderecoObj.id); //manterá na mesma ordem de markersLojas, os ids dos fornecedores
	var geocoder = new GClientGeocoder();
	geocoder.setBaseCountryCode('BR');
	geocoder.getLocations(enderecoObj.endereco, handleLoja);
}

function calculaMenorDuracao(){
	var waypoints = []; 
	waypoints.push(markerCliente);
	waypoints.push(markersLojas.pop());
	directions.loadFromWaypoints(waypoints);
	GEvent.addListener(directions, "load", function() {
        var duration = directions.getDuration().seconds;
        var idLojaAtual = idsLojas.pop();
        //debugDuration += '[id : '+idLojaAtual+', duracao : '+duration+']';
        if(menorTempo == null || menorTempo > duration){
			menorTempo = duration;
			idLojaMaisRapida = idLojaAtual;
        }
        if(markersLojas.length > 0){
        	calculaMenorDuracao();
        }else{
        	window.location.href = "/diskcook/fornecedor!goToHomeFornecedor.action?fornecedorId="+idLojaMaisRapida+"&requestFromHomeFornecedorVariasLojas=true";
        }
	});
				
}
var enderecosLojasCliente;
function selecionaLojaMaisRapida(enderecos){
	// atributos do objeto de endereco loja: id, endereco
	// atributos do objeto de endereco cliente: endereco
	// ultimo endereco no vetor tem que ser de cliente 
	enderecosLojasCliente = enderecos;
	var geocoder = new GClientGeocoder();
	geocoder.setBaseCountryCode('BR');
	geocoder.getLocations(enderecosLojasCliente.pop().endereco, handleCliente);
}