var w;
var h;
var IE6= false;
var infoNavegador = navigator.userAgent;

if(infoNavegador.indexOf('MSIE 6.0') > -1){
	IE6 = true;
}

if (self.innerWidth){
	w = self.innerWidth;
	h = self.innerHeight;
} else if (document.documentElement && document.documentElement.clientWidth){
	w = document.documentElement.clientWidth;
	h = document.documentElement.clientHeight;
} else if (document.body){
	w = document.body.clientWidth;
	h = document.body.clientHeight;
}

if((w<=800) && (confirm(msgLight))){
	document.location='site.html?site=sitelight';
}else{
	var ok = false;
	var responseLogMap = null;
	var map;
	var directions;
	var arrow;
	var placemarks;
	var markers = new Array();
	var distances = new Array();
	var types = new Array();
	var cidades = new Array();
	var loaded = new Array()
	var origem = null;
	var carregouEntidades = false;
    var center = new GLatLng(-23.375035, -46.58477);
    var lastAddress;
    var markerLastSearch = null;
	var zoomedSearch = "true"; // condiciona a entrada na região de criacao de rota, adicao do marcador "voce" quando uma pesquisa eh feita
	var latMaxLast = null;
	var lngMinLast = null;
	var latMinLast = null;
	var lngMaxLast = null;
	function mostrarPassoAPasso() {
		var tela = new sack();
		tela.requestFile = 'site.html';
		tela.setVar( 'method','mostrarPassoAPasso' );
		tela.runAJAX();	// Execute AJAX function
	}
	
	
	
	function initMapa(){
		map = new GMap2(document.getElementById("map"));
	    map.addControl(new GLargeMapControl());
	    map.addMapType(G_PHYSICAL_MAP);  
	    map.enableScrollWheelZoom();
	    //precisa setar center senão dá erro (descobrir porque)
	   	map.setCenter(center,9);
	}
		
	initMapa();
	
    var mgrOptions = { borderPadding: 50, maxZoom: 20, trackMarkers: false };
	var mgr = new MarkerManager(map, mgrOptions);
	var colors= { "cooperativa": "green", "comercio": "yellow", "pev": "red", "voce":"blue"};

   	var voce = new GIcon();
   	var lastOpen;
	voce.image = "./images/icon/voce-alfinete.png";
	if (IE6==false){
		voce.shadow= "./images/icon/voce-alfinete-shadow.png";
	}
	voce.iconSize = new GSize(90, 72);
	voce.iconAnchor = new GPoint(30, 72);
	voce.infoWindowAnchor = new GPoint(0, 60);
	
	var nearest = {"cooperativa" : [], "pev" : [], "comercio": []};
	var distance = {"cooperativa" : [], "pev" : [], "comercio": []};

	var minx = 0;
	var maxx = 0;
	var miny = 0;
	var maxy = 0;
	
	window.onunload = function(){
		GUnload();
	}
	
	function doResize(){
		if (self.innerWidth)
		{
			frameWidth = self.innerWidth;
			frameHeight = self.innerHeight;
		}
		else if (document.documentElement && document.documentElement.clientWidth)
		{
			frameWidth = document.documentElement.clientWidth;
			frameHeight = document.documentElement.clientHeight;
		}
		else if (document.body)
		{
			frameWidth = document.body.clientWidth;
			frameHeight = document.body.clientHeight;
		}

		document.getElementById('map').style.height = (frameHeight-243) + 'px';
/*		if(frameWidth < 813){
			document.getElementById('flashMenu').style.display = 'none';
		}else{
			document.getElementById('flashMenu').style.display = 'block';
		}
*/
		map.checkResize();
	}

	window.onresize = doResize;
	doResize();
	function cm(lat, lon, id, prefix) { //createMarker
		var marker = new LabeledMarker(new GLatLng(lat,lon), {icon: getIcon(prefix, id)});
		var style = "custom_info_window_"+colors[prefix];
	  	
	  	   GEvent.addListener(marker, 'click', function(){
		  	lastOpen = marker; 
            marker.openExtInfoWindow(
              map,
              style,
              "<div>Carregando...</div>",
              {
                ajaxUrl: "siteAjax.html?method=info&id=" + id + "&tipo=" + prefix, 
                beakOffset: 3
              }
            ); 
          });
	  	
		return marker;
	}

	function zoomIn(){
		map.closeExtInfoWindow();
		if (lastOpen){
			map.setCenter(lastOpen.getLatLng());
		}
		map.setZoom(15);
	}
	
	function getIcon(prefixo, qtd){
		var icone = new GIcon();
		
		if (prefixo == 'voce'){
			qtd = 3;
		} else if (qtd < 0){
			qtd = -1 * qtd;
			if (qtd < 5){ qtd = 1.5; //icone.imageMap =[19,0,28,6,30,11,30,21,21,28,11,27,3,17,5,6,14,0];
			} else if (qtd < 10){ qtd = 2;   //icone.imageMap = [16,0,30,0,39,12,39,25,32,35,19,37,5,27,5,11];
			} else if (qtd < 15){ qtd = 2.3; //icone.imageMap = [17,0,36,0,47,15,47,30,34,41,16,40,5,25,5,13];
			} else if (qtd < 20){ qtd = 2.6; //icone.imageMap = [18,0,37,0,50,13,52,20,51,32,46,41,37,46,24,46,13,41,5,29,5,16];
			} else if (qtd < 25){ qtd = 2.8; //icone.imageMap = [22,0,43,1,56,16,55,37,38,49,17,48,5,32,5,16];
			} else {qtd = 3; //icone.imageMap = [36,7,58,16,64,35,54,56,30,61,11,44,10,23,26,8];
			}
		} else {
			qtd = 1;
			//icone.imageMap = [11,0,16,0,20,5,20,15,13,17,8,17,3,13,3,5,8,0];
		}
		
		if (prefixo != 'voce'){
			icone.image = ctx+'/images/icon/'+prefixo+qtd+'-alfinete.png';
			if (IE6==false){
				icone.shadow = ctx+'/images/icon/'+prefixo+qtd+'-alfinete-shadow.png';
				icone.shadowSize = new GSize(qtd*30, Math.round(qtd*33.3));
			}
			icone.transparent = ctx+'/images/icon/'+prefixo+qtd+'-alfinete-trans.png';
			icone.iconSize = new GSize(qtd*20, Math.round(qtd*33.3));
			icone.iconAnchor = new GPoint(qtd*30/4.37, Math.round(qtd*33.3));
			icone.infoWindowAnchor = new GPoint(qtd*9, Math.round(qtd*33.3/3));
		}
		else{
			icone.image = ctx+'/images/icon/'+prefixo+qtd+'-alfinete.png';
			icone.iconSize = new GSize(qtd*30, qtd*36);
			if (IE6==false){
				icone.shadowSize = new GSize(qtd*30, qtd*36);
			}
			icone.iconAnchor = new GPoint(qtd*30/4.37, qtd*36);
			icone.infoWindowAnchor = new GPoint(qtd*10, qtd*10);
		}
		
		return icone;
	}

	function getChecked(type){
		return document.getElementById("filtro_"+type).checked;
	}
	
	function showAddress(address) {
		//zoomedSearch =  "false";
		lastAddress = address;
		document.getElementById('search').value = address;
		document.getElementById('resultados').style.display = 'none';
		var geocoder = new GClientGeocoder();
		geocoder.setBaseCountryCode('BR');
		geocoder.getLocations(address, addAddressToMap2);
		if(checkIsServerRota()){
			try {
				pageTracker._trackPageview("/index/pesquisar" );
				pageTracker1._trackPageview("/index/pesquisar" );
			} catch (err) {	}
		}
	}
	
	function OnAddOverlayDirection(direction){ 
        var i; 
        for(i = 0; i< direction.getNumGeocodes(); i++){ 
            map.removeOverlay(direction.getMarker(i)); 
        } 
    } 
	
    function abreJanelaDirections(tipo){
		var newWindow = window.open('','','toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=500,height=400');
		if(newWindow != null){
			newWindow.document.open();
			newWindow.document.write("<link href=\""+ctx+"/styles/site.css\" rel=\"stylesheet\" type=\"text/css\" />");
			newWindow.document.write("<style>table{font-family: Verdana, Trebuchet, Helvetica, arial, sans-serif;font-size:11px;}</style>");
			newWindow.document.write("<title>Rota</title>");
			str = document.getElementById('tempDirections').innerHTML;
			if(str.indexOf("http://maps.google.com/intl/pt-BR_ALL/mapfiles/icon_greenA_graybg.png") > -1){
				str = str.replace("http://maps.google.com/intl/pt-BR_ALL/mapfiles/icon_greenA_graybg.png","./images/icon/voce.gif\" style=\"margin-bottom: 4px;\"");
				str = str.replace("http://maps.google.com/intl/pt-BR_ALL/mapfiles/icon_greenB_graybg.png","./images/icon/"+tipo+".gif\" style=\"margin-bottom: 4px;\"");
			}else{
				str = str.replace("http://maps.google.com/intl/pt-BR_ALL/mapfiles/icon_greenA.png","./images/icon/voce.gif\" style=\"margin-bottom: 4px;\"");
				str = str.replace("http://maps.google.com/intl/pt-BR_ALL/mapfiles/icon_greenB.png","./images/icon/"+tipo+".gif\" style=\"margin-bottom: 4px;\"");
			}
			newWindow.document.write(str);
			newWindow.document.close();
		}
    }
    
    function localizaPrefeituraAjax(place){
 		var address = place.address;
    	var tela = new sack();
    	var fileName = 'sitePrefAjax.html';
		var cidade = place.AddressDetails.Country.AdministrativeArea.Locality.LocalityName;
    	tela.requestFile = fileName;
    	tela.setVar('method', 'localizaPrefeitura');
    	tela.setVar('address', address);
    	tela.setVar('cidade', cidade);
    	
    	tela.onCompletion = function(){
			if(tela.response){
				var newWindow = window.open('','prefeitura','toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=500,height=400');
				if(newWindow != null){
					newWindow.document.open();
					newWindow.document.write(tela.response);
					newWindow.document.close();
				}
			}
		};
		tela.runAJAX();		// Execute AJAX function
    }
	
	function enterPress(e){
		var k = e.keyCode||e.charCode;
		if(k == 13 && carregouEntidades == true) 
			fazPesquisa(); 
		return false;
	}
	
	function mostrarDiv(){
		document.getElementById('fundoTela').style.width='100%';
		document.getElementById('fundoTela').style.display='block';
		document.getElementById('passoAPasso').style.display='block';
		
	}
	
	function ocultarDiv(){
		document.getElementById('fundoTela').style.width='0%';
		document.getElementById('passoAPasso').style.width='0%';
		document.getElementById('fundoTela').style.display='none';
		document.getElementById('passoAPasso').style.display='none';
	}

	function respostaPesquisa(resposta){
		showAddress(document.getElementById('search').value);
	}

	function fazPesquisa(){
		// ok = true sinaliza criacao de logMap. Chamada para createLogMap em carregaRotaVoce, ok é setado para false, a fim de evitar
		//      que dois logMaps sejam criados para a mesma pesquisa.
		ok = true;
		zoomedSearch =  "false";
		map.closeExtInfoWindow();
		if(carregouEntidades){
			var geocoder = new GClientGeocoder();
			geocoder.setBaseCountryCode('BR');
			var address = document.getElementById('search').value;
			geocoder.getLocations(address, respostaPesquisa);
			if(checkIsServerRota()){
				pageTracker._trackPageview("/index/pesquisar" );
			}
			return false;
		} else{
			//document.getElementById('carregando').style.display = 'block';
			document.getElementById('throbber').style.display = 'inline';
		}
	}
	  
	function createLogMap(response) {
		if (response != null && response.Placemark && response.Placemark.length > 0) {
	     	var place = response.Placemark[0];
			var point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]);
	        var marker = new GMarker(point);
			var cidade = place.AddressDetails.Country.AdministrativeArea.Locality.LocalityName;
			var address = place.address;
			var estado = place.AddressDetails.Country.AdministrativeArea.AdministrativeAreaName;
			var pais = place.AddressDetails.Country.CountryNameCode;
			var tela = new sack();
		
			tela.requestFile = 'logMapSite.html';
			if(distance != null){
				if(distance['cooperativa'] != null)
					tela.setVar('nearestCooperativa', distance['cooperativa']);
				if(distance['comercio'] != null)
					tela.setVar('nearestComercio', distance['comercio']);
				if(distance['pev'] != null)
					tela.setVar('nearestPev', distance['pev']);
			}
			
			tela.setVar('rotaNoSeuSite', rotaNoSeuSite);
			if(rotaNoSeuSite == "true"){
				rotaNoSeuSite = false;
			}
			tela.setVar('method','createLog');
			tela.setVar('busca', document.getElementById('search').value);
			tela.setVar('address', address);
			tela.setVar('cidade', cidade);
			tela.setVar('estado', estado);
			tela.setVar('pais', pais);
			tela.setVar('latitude', marker.getLatLng().lat());
			tela.setVar('longitude', marker.getLatLng().lng());
			tela.setVar('cooperativas', document.getElementById('filtro_cooperativa').checked);
			tela.setVar('comercios', document.getElementById('filtro_comercio').checked);
			tela.setVar('pevs', document.getElementById('filtro_pev').checked);
			
			tela.onCompletion = function(){};
			
			tela.runAJAX();	// Execute AJAX function
		}
  	}  
  	
  	function carregaRotaVoce(){
  		inicio = new Date().getTime();
	  	var vocelat = markerLastSearch.getLatLng().lat();
	 	var vocelng = markerLastSearch.getLatLng().lng();
	  	var parametros =  "latMax="+"&lngMax="+"&latMin="+"&lngMin="+"&zoomAtual="+"&voce.lat="+vocelat+"&voce.lng="+vocelng;
		GDownloadUrl("site.html?method=carregaEntidades&"+parametros, function(data, responseCode) {
			var xml = GXml.parse(data);
			var proximosPev = xml.documentElement.getElementsByTagName("markerPev");
			var proximosCoop = xml.documentElement.getElementsByTagName("markerCoop");
			var proximosComercios = xml.documentElement.getElementsByTagName("markerComercios");
			var pontosProximos = [];
			var entidadesProximas = [];
			var pevProximos = [];
			var coopProximos = [];
			var comerciosProximos = [];
			var idPrefixoProximos =[];
			var retornoEntidadesPontosProximos = [];
			var noWayPoints = false;
			var nearestType = null;
			var r = null;
			var nearestCoop = null;
			var nearestPev = null;
			var nearestComercio = null;
			
			// Recupera as entidades e os pontos mais proximos para as checkBox selecionadas
		  	var numeroEntidadesPev = proximosPev.length;
			var numeroEntidadesCoop = proximosCoop.length;
			var numeroEntidadesComercios = proximosComercios.length;
		  	
			for(var i=0; i<numeroEntidadesPev; i++){
				var entidade = proximosPev[i]; 
				var id = entidade.getAttribute("id");
				var lat = entidade.getAttribute("lat");
				var lng = entidade.getAttribute("lng");
				var prefixo = entidade.getAttribute("prefixo");
				r = cm(lat, lng, id, prefixo);
				pontosProximos.push(r.getPoint());
				entidadesProximas.push(r);
				pevProximos.push(r);
			}
			for(var i=0; i<numeroEntidadesCoop; i++){
		 		var entidade = proximosCoop[i]; 
		 		var id = entidade.getAttribute("id");
		 		var lat = entidade.getAttribute("lat");
		 		var lng = entidade.getAttribute("lng");
		 		var prefixo = entidade.getAttribute("prefixo");
		 		r = cm(lat, lng, id, prefixo);
				pontosProximos.push(r.getPoint());
				entidadesProximas.push(r);
				coopProximos.push(r);
			}
			for(var i=0; i<numeroEntidadesComercios; i++){
				var entidade = proximosComercios[i]; 
				var id = entidade.getAttribute("id");
				var lat = entidade.getAttribute("lat");
				var lng = entidade.getAttribute("lng");
				var prefixo = entidade.getAttribute("prefixo");
				r = cm(lat, lng, id, prefixo);
				pontosProximos.push(r.getPoint());
				entidadesProximas.push(r);
				comerciosProximos.push(r);
			}
			if (markerLastSearch != null){
				pontosProximos.push(markerLastSearch.getPoint());
			}
			// Solução Técnica Alternativa pra centralizar o mapa
			var bounds = new GBounds(pontosProximos);
			var sw = new GLatLng(bounds.maxY, bounds.minX);
			var ne = new GLatLng(bounds.minY, bounds.maxX);
			var latLngBounds = new GLatLngBounds(sw, ne);
			var center = latLngBounds.getCenter();
			var zoom = map.getBoundsZoomLevel(latLngBounds);
			map.setCenter(center, zoom);
			// fim da Solução Técnica Alternativa
			zoomedSearch = "true";
			
			//encontra pontos mais proximos por tipo
			for (var i=0;i<coopProximos.length; i++){
				if (nearestCoop == null){
					nearestCoop = coopProximos[i];
				} else{
					if (nearestCoop.getLatLng().distanceFrom(markerLastSearch.getLatLng()) > coopProximos[i].getLatLng().distanceFrom(markerLastSearch.getLatLng()) ){
						nearestCoop = coopProximos[i];
					}		
				}
			}
			
			for (var i=0;i<comerciosProximos.length; i++){
				if (nearestComercio == null){
					nearestComercio = comerciosProximos[i];
				}
				else{
					if (nearestComercio.getLatLng().distanceFrom(markerLastSearch.getLatLng()) > 
						comerciosProximos[i].getLatLng().distanceFrom(markerLastSearch.getLatLng()) ){
						nearestComercio = comerciosProximos[i];
					}		
				}
			}
				
			for (var i=0;i<pevProximos.length; i++){
				if (nearestPev == null){
					nearestPev = pevProximos[i];
				} else{
					if (nearestPev.getLatLng().distanceFrom(markerLastSearch.getLatLng()) > pevProximos[i].getLatLng().distanceFrom(markerLastSearch.getLatLng()) ){
						nearestPev = pevProximos[i];
					}		
				}
			}

			//Guarda as distancias da cooperativa, comercio e pev mais proximos
			distance['cooperativa'] = nearestCoop.getLatLng().distanceFrom(markerLastSearch.getLatLng());
			distance['comercio'] = nearestComercio.getLatLng().distanceFrom(markerLastSearch.getLatLng());
			distance['pev'] = nearestPev.getLatLng().distanceFrom(markerLastSearch.getLatLng());

			var maisProxima = null;
			// nearestPev, nearestCoop e nearestComercio nunca estarão nulos, já que grava-se no logMap as entidades mais próximas
			// independente da pesquisa feita
			var considerarPev = (nearestPev != null && getChecked("pev"));
			var considerarCoop = (nearestCoop != null && getChecked("cooperativa"));
			
			// encontra ponto mais proximo (maisProxima)
			if(considerarPev){
				if(!considerarCoop){
					nearestType = 'pev';
					maisProxima = nearestPev;	
				} else if(nearestPev.getLatLng().distanceFrom(markerLastSearch.getLatLng()) < nearestCoop.getLatLng().distanceFrom(markerLastSearch.getLatLng())){
					nearestType = 'pev';
					maisProxima = nearestPev;	
				} else{
					nearestType = 'cooperativa';
					maisProxima = nearestCoop;
				}
			}else{
				if (considerarCoop){
					nearestType = 'cooperativa';
					maisProxima = nearestCoop;
				}else{
					noWayPoints = true; // caso busca soh por comercio nao tracar rota
				}
			}
			// limpa possíveis rotas traçadas anterior a esta consulta
		    if(directions || directions != null) directions.clear();
			// traca rota para maisProxima
			if (noWayPoints == false){
				var directionsPanel = document.getElementById("tempDirections");
				directions = new GDirections(map, directionsPanel);
			    var waypoints = [];
			    waypoints.push(markerLastSearch.getLatLng());
			    if(maisProxima != null){
				    waypoints.push(maisProxima.getLatLng());
				    GEvent.addListener(directions,"addoverlay", OnAddOverlayDirection); 
				    directions.loadFromWaypoints(waypoints, {locale: "pt_BR", preserveViewport: true });
				    if(nearestType == 'cooperativa')
				      	tipoLocal = 'uma Cooperativa';
				    if(nearestType == 'pev')
				      	tipoLocal = 'um Ponto de Entrega Voluntária';
				    GEvent.clearInstanceListeners(markerLastSearch);
					GEvent.addListener(markerLastSearch, 'click', function(){
						var distanceE = ((directions.getDistance().meters)/1000).toFixed(1);
						distanceE = String(distanceE);
						distanceE = distanceE.replace('.', ',');
						markerLastSearch.openInfoWindowHtml("<div id=\"exid\"><h3>Você está aqui!</h3></div><div>O local mais próximo do seu endereço é "+tipoLocal+" a "+distanceE+"km<br/><br/></div><div><a href=\"#\" onclick=\"abreJanelaDirections(\'"+nearestType+"\')\">Clique aqui para ver a rota</a></div>"); 
				    });
				}
			}else{
				GEvent.addListener(markerLastSearch, 'click', function(){
					markerLastSearch.openInfoWindowHtml("<div id='exid'><h3>Você está aqui!</h3></div>"); 
			    });
			}
		    carregaPontos();
		    if(ok){
				ok = false;
				createLogMap(responseLogMap);
			}
		    setTimeout("GEvent.trigger(markerLastSearch, 'click')", 5000);
		});
		var sa = (new Date().getTime() - inicio)/1000;
  	}
  	
  	function defineParametrosBounds(){
  		//auxiliar de carregaMarcadoresComuns
		var latMax = map.getBounds().getSouthWest().lat();
	  	var lngMin = map.getBounds().getSouthWest().lng();
	  	var latMin = map.getBounds().getNorthEast().lat();
	  	var lngMax = map.getBounds().getNorthEast().lng();
	  	var zoomAtual = map.getZoom();
	  	
	  	parametros = '';
	  	parametros += "latMax="+latMax+"&lngMax="+lngMax+"&latMin="+latMin+"&lngMin="+lngMin+"&zoomAtual="+zoomAtual;
		return parametros;
	}

	function carregaMarcadoresComuns(){
		inicio = new Date().getTime();
	  	var parametros = defineParametrosBounds();
	  	var latMax = map.getBounds().getNorthEast().lat();
	  	var lngMin = map.getBounds().getSouthWest().lng();
	  	var latMin = map.getBounds().getSouthWest().lat();
	  	var lngMax = map.getBounds().getNorthEast().lng();
	  	var zoomAtual = map.getZoom();
	  	
		// adiciona um margem para os pontos carregados na tela
	  	var margem = 0.1;
	  	latMax = latMax + (latMax - latMin) * margem;
	  	latMin = latMin - (latMax - latMin) * margem;
	  	lngMax = lngMax + (lngMax - lngMin) * margem;
	  	lngMin = lngMin - (lngMax - lngMin) * margem;
	  	
	  	parametros = '';
	  	parametros += "latMax="+latMax+"&lngMax="+lngMax+"&latMin="+latMin+"&lngMin="+lngMin+"&zoomAtual="+zoomAtual;
		  	
		GDownloadUrl("site.html?method=carregaEntidades&"+parametros, function(data, responseCode) {
	  		
			var xml = GXml.parse(data);
			var Entidades  = xml.documentElement.getElementsByTagName("marker");
			var numeroEntidades  = Entidades.length;
			
			var zoom = map.getZoom();
			var bounds = map.getBounds();
			var checkedCoop = getChecked("cooperativa");
			var checkedComercio = getChecked("comercio");
			var checkedPev = getChecked("pev");
						
			inicio = new Date().getTime();		
	 		var sa = (new Date().getTime() - inicio)/1000;
	 		var aPontos = [];
	 		for(var i=0; i<numeroEntidades; i++){
				var r = null;
		 		var entidade = Entidades[i]; 
		 		var id = entidade.getAttribute("id");
		 		var lat = entidade.getAttribute("lat");
		 		var lng = entidade.getAttribute("lng");
		 		var prefixo = entidade.getAttribute("prefixo");
		 		if (checkedCoop && prefixo == "cooperativa") {
		 			r = cm(lat, lng, id, prefixo);
		 		}else if(checkedPev && prefixo == "pev") {
		 			r = cm(lat, lng, id, prefixo);	
		 		} if(checkedComercio && prefixo == "comercio") {
		 			r = cm(lat, lng, id, prefixo);	
	 			}
		 		
				if(r != null){
		 			aPontos.push(r);
		 		}
			}
	 		if (mgr)
	 			mgr.clearMarkers();
	 		if (document.getElementById('search').value!='' && markerLastSearch != null){
	 			origem = markerLastSearch;
				mgr.addMarker(markerLastSearch,0);
	 		}
			mgr.addMarkers(aPontos, 0);
	 		var sa1 = (new Date().getTime() - inicio)/1000;
	 		mgr.refresh();
 			var sa = (new Date().getTime() - inicio)/1000;
 		
	 		document.getElementById('carregando').style.display = 'none';
			document.getElementById('throbber').style.display = 'none';
			carregouEntidades = true;
		});
  	}
  	
  	function carregaPontos(){
		if(zoomedSearch == "false" && document.getElementById('search').value!='' && carregouEntidades){
			carregaRotaVoce();
		} 
		carregaMarcadoresComuns();
  	}
  	
  	function addAddressToMap2(response) {
		var resultados = document.getElementById('resultados');
		var resultados_texto = '';
		responseLogMap = response;
		if(!response || response.Status.code != 200 || response.Placemark == null) {
			alert(msgEnderecoNaoLocalizado);
		} else if (response.Placemark.length > 1){
			if(response.Placemark.length > 10){
				resultados_texto = msgMuitosResultados;
			}
			else{
				for (var j = 0; j < response.Placemark.length; j++){
					var place = response.Placemark[j];
					resultados_texto += "<a href='#' title='"+place.address+"' onclick='showAddress(this.title);'>" + place.address + "</a><br>";
				}
			}  
			// Para variados resultados, não se traça a rota para nenhum ponto encontrato.
			// Aguarda-se que seja selecionado o endereço desejado para que seja feita a localização.
			
			resultados.innerHTML = resultados_texto;
			resultados.style.display = 'block';
			placemarks = response.Placemark;
			
//			var place = response.Placemark[0];
//			markerLastSearch = cm(place.Point.coordinates[1], place.Point.coordinates[0],0,'voce');
//			localizaPrefeituraAjax(place);
    		
			if (origem != null){
				mgr.removeMarker(origem);
			}
//			carregaPontos();
		}else{
			var place = response.Placemark[0];
			resultados_texto = "<a href='#' title='"+place.address+"' onclick='showAddress(this.title);'>" + place.address + "</a><br>";
			resultados.innerHTML = resultados_texto;
			if(origem != null)
				map.removeOverlay(origem);
    	
			placemarks = response.Placemark;
			markerLastSearch = cm(place.Point.coordinates[1], place.Point.coordinates[0],0,'voce');
			localizaPrefeituraAjax(place);
    		
/*			if (origem != null){
				mgr.removeMarker(origem);
			}
*/
			carregaPontos();
		}		
	}
	  
	function init(){
		carregouEntidades = false;
		document.getElementById('throbber').style.display = 'inline';
		GEvent.addListener(map, "dragend", function (){
			document.getElementById('throbber').style.display = 'inline';
			carregaPontos();
		});
		GEvent.addListener(map, "zoomend", function (){
			document.getElementById('throbber').style.display = 'inline';
			loaded = new Array();
			if (mgr)
	 			mgr.clearMarkers();
			carregaPontos();
		});
		
		var latlngMapplet = null;
		if(latMapplet != null && lngMapplet != null){
			//centraliza mapa no ponto escolhido. Substitui virgula por ponto.
   			latlngMapplet = new GLatLng(latMapplet, lngMapplet);
   		}
		if(latlngMapplet != null){
		   	map.setCenter(latlngMapplet,15);
		}
		// If ClientLocation was filled in by the loader, use that info instead
	    else if (google.loader && google.loader.ClientLocation && google.loader.ClientLocation.address && google.loader.ClientLocation.address.country_code == "BR") {
	    	zoomUser = 13;
	    	latlngUser = new google.maps.LatLng(google.loader.ClientLocation.latitude, google.loader.ClientLocation.longitude);
	    	map.setCenter(latlngUser, zoomUser);
	    }
		else {
		 	carregaPontos();
		}
		
    }
/*
    function setaIcones(tipo){
		var qtdsIcones = new Array (1,-3,-5,-12,-18,-22,-27);
		var vetor = [];
			for (var i=0; i<qtdsIcones.Length; i++){
				vetor.push(getIcon(tipo, qtd));
			}
			return vetor;
	}
*/    
    //var iconesCooperativa = setaIcones('cooperativa');
	//var iconesPev = setaIcones('pev');
	//var iconesComercio = setaIcones('comercio');
    //var iconeVoce = getIcon('voce', 0);
    
    function retornaIcone(prefixo, qtd){
    	if (prefixo == 'voce'){	return iconeVoce;}
		if (prefixo == 'cooperativa'){	
			if (qtd < 0){
			qtd = -1 * qtd;
			if (qtd < 5){ return iconesCooperativa[5];
			} else if (qtd < 10){ return iconesCooperativa[4];
			} else if (qtd < 15){ return iconesCooperativa[3];
			} else if (qtd < 20){ return iconesCooperativa[2];
			} else if (qtd < 25){ return iconesCooperativa[1];
			} else { return iconesCooperativa[0];}
			} else {
			 return iconesCooperativa[6];
			}
	    }
	    if (prefixo == 'pev'){	
			if (qtd < 0){
			qtd = -1 * qtd;
			if (qtd < 5){ return iconesPev[5];
				} else if (qtd < 10){ return iconesPev[4];
				} else if (qtd < 15){ return iconesPev[3];
				} else if (qtd < 20){ return iconesPev[2];
				} else if (qtd < 25){ return iconesPev[1];
				} else { return iconesPev[0];}
			} else {
			 return iconesPev[6];
			}
	    }
	     if (prefixo == 'comercio'){	
			if (qtd < 0){
			qtd = -1 * qtd;
			if (qtd < 5){ return iconesComercio[5];
				} else if (qtd < 10){ return iconesComercio[4];
				} else if (qtd < 15){ return iconesComercio[3];
				} else if (qtd < 20){ return iconesComercio[2];
				} else if (qtd < 25){ return iconesComercio[1];
				} else { return iconesComercio[0];}
			} else {
			 return iconesComercio[6];
			}
	    }
    }
	init();
} 
