

	function initialize() {
		
		// Globais
		var mapDom 			= document.getElementById("map_canvas");
		var selectedCountry = Utils.queryString("country") ? Utils.queryString("country") : "br";
		var serviceName = Utils.queryString("oficinasRef") ==  "true" ? "busca-oficinas" : Utils.queryString("encontreCorretores") ==  "true" ? "encontre-corretor" : Utils.queryString("redeReferenciada") == "true" || Utils.queryString("redeReferenciada2") == "true"? "saude-rede-referenciada" : Utils.queryString("codigoTipoEstabelecimento") == 86 ? "busca-escritorio" : Utils.queryString("codigoProduto") != undefined ? "busca-caps" : "nao-especificado";
		
		if(Utils.queryString("oficinasCAR") ==  "true"){
			serviceName = "busca-car";
		}
		
		var isAutoComplete = false;
		
		var dontCloseInfo   = false; //Controle para abertura e fechamento de tooltip
		
		//Timeouts de tooltip
		var timeOutAction;
		var timeOutActionPin;
		
		//InstÃ¢ncia para traÃ§ar rota
		var directionsService = new google.maps.DirectionsService();
		
		//InstÃ¢ncia Geocoder
		var geocoder = new google.maps.Geocoder();
		
		//Custom buttons
		var geoLocateBt = $("<button title='Geolocalização' class='geoLocateBt'><div></div></button>").click(function() {
			if(mapInstance) {
				navigator.geolocation.getCurrentPosition(function(position) {
					  var pos = new google.maps.LatLng(position.coords.latitude,
													   position.coords.longitude);

					geoLocatePin.setMap(mapInstance);
					geoLocatePin.setVisible(true);
					geoLocatePin.setPosition(pos);
					mapInstance.setZoom(16);
					mapInstance.setCenter(pos);
				}, function(e) {
					console.log(e);
				});
				
			}
		})
		/*
		//salvar Google Analytics
		var dataLayerAux;
		var autoservico = Utils.queryString("autoservico");
		var versaoautoservico = Utils.queryString("versaoautoservico");
		if(typeof dataLayer != "undefined"){
			dataLayerAux = dataLayer;
		}else if(typeof parent.dataLayer != "undefined"){
			dataLayerAux = parent.dataLayer;
		}else if(typeof parent.parent.dataLayer != "undefined"){
			dataLayerAux = parent.parent.dataLayer;
		}else{
			dataLayerAux = [];
		}
		if(typeof autoservico != "undefined" && autoservico != ""){
			dataLayerAux.push({'event':'autoservicos.view',
								'auto-servico':autoservico,
								'virtualPath':'/'+autoservico+'/mapa/resultados'
								});
		
		}else{
			dataLayerAux.push({'event':'autoservicos.view',
								'auto-servico':"mapa-novo-site",
								'virtualPath':'/mapa-novo-site/mapa/resultados'
								});
		}
		// fim Google Analytics
		
		*/
		if(window.matchMedia("(min-width: 769px)").matches) {
			$(geoLocateBt).tooltip({
			  position: {
				my: "left center",
				at: "left+30 center",
				create: function( event, ui )	 {
					var x = 1;
					if(!window.matchMedia("(min-width: 769px)").matches) $(".ui-tooltip").css("width","0px").css("height","0px").hide();
				},
				using: function( position, feedback ) {
				  $( this ).css( position );
				  if(!window.matchMedia("(min-width: 769px)").matches) $(".ui-tooltip").css("width","0px").css("height","0px").hide();
				}
			  }
			});;
		}
		
		var zoomDivCustom = $("<div class='zoomDivCustom'></div>");
		
		var zoomDivCustom_plus = $("<div title='Aumentar Zoom' class='zoomDivCustom_plus'><div>+</div></div>").click(function() {
			if(mapInstance) {
				mapInstance.setZoom(mapInstance.getZoom() + 1);
			}
		})
	
		if(window.matchMedia("(min-width: 769px)").matches) {
			zoomDivCustom_plus.tooltip({
			  position: {
				my: "left center",
				at: "left+30 center",
				create: function( event, ui )	 {
					var x = 1;
				},
				using: function( position, feedback ) {
				  $( this ).css( position );
				}
			  }
			});
		}
		var zoomDivCustom_minus = $("<div title='Diminuir Zoom' class='zoomDivCustom_minus'><div>-</div></div>").click(function() {
			if(mapInstance) {
				mapInstance.setZoom(mapInstance.getZoom() - 1);
			}
		})
		
		if(window.matchMedia("(min-width: 769px)").matches) {
			zoomDivCustom_minus.tooltip({
			  position: {
				my: "left center",
				at: "left+30 center",
				create: function( event, ui )	 {
					var x = 1;
				},
				using: function( position, feedback ) {
				  $( this ).css( position );
				}
			  }
			});;
		}
		var isSatellite = true;
		var customSatelliteDiv = $("<div title='Trocar VisÃ£o' class='toolTip customSatelliteDiv'><div class='satellite'></div></div>").click(function() {
			if(isSatellite) {
				mapInstance.setMapTypeId(google.maps.MapTypeId.SATELLITE);
				isSatellite = false;
				$("div", this).removeClass('satellite').addClass('mapType');
			} else {
				mapInstance.setMapTypeId(google.maps.MapTypeId.ROADMAP );
				isSatellite = true;
				$("div", this).removeClass('mapType').addClass('satellite');
			}
		});
		
		if(window.matchMedia("(min-width: 769px)").matches) {
			$(customSatelliteDiv).tooltip({
			  position: {
				my: "left center",
				at: "left+30 center",
				create: function( event, ui )	 {
					var x = 1;
				},
				using: function( position, feedback ) {
				  $( this ).css( position );
				}
			  }
			});
		}
		
		zoomDivCustom_plus.appendTo(zoomDivCustom);
		zoomDivCustom_minus.appendTo(zoomDivCustom);
				
		// Street View
		var panoramaOptions = {
			addressControlOptions : { position : google.maps.ControlPosition.TOP_LEFT },
			zoomControlOptions : { position : google.maps.ControlPosition.LEFT_TOP},
			enableCloseButton : false,
			visible: false //set to false so streetview is not triggered on the initial map load
		};
		var panorama = new  google.maps.StreetViewPanorama(mapDom, panoramaOptions);
		
		var showWithExtra = false;
		var showWithExtraDest = false;
		
		//Define Local de abertura
		var initLatLong;
		var initialDoLink = false;
		if(Utils.queryString("latitude") && Utils.queryString("longitude")){
			initialDoLink = true;
			initLatLong = new google.maps.LatLng(parseFloat(Utils.queryString("latitude")).toFixed(3), parseFloat(Utils.queryString("longitude")).toFixed(3));
		}else{
			initLatLong = new google.maps.LatLng(defaultDetails.initialPosition.latitude, defaultDetails.initialPosition.longitude);
		}
		
		var openInLatLong;
		var destLatLong;
		if(Utils.queryString("latend") && Utils.queryString("longend") && Utils.verifyCall() == 'destiny'){
			destLatLong = new google.maps.LatLng(parseFloat(Utils.queryString("latend")), parseFloat(Utils.queryString("longend")));
			openInLatLong = destLatLong;
		}else if(Utils.queryString("latend") && Utils.queryString("longend")){
			destLatLong = new google.maps.LatLng(parseFloat(Utils.queryString("latend")), parseFloat(Utils.queryString("longend")));
			openInLatLong = initLatLong;
		}else{
			openInLatLong = initLatLong;
		}
		var initialZoom = 12;
		
		
		// InstÃ¢ncia Mapa
		var mapOptions = {
			center: openInLatLong,
			zoom: initialZoom,
			mapTypeId: google.maps.MapTypeId.ROADMAP,
			scaleControl: false,
			streetView: panorama,
			mapTypeControl: false,
			zoomControl: false,
			panControl: false,
			zoomControlOptions: {
				style: google.maps.ZoomControlStyle.SMALL,
				position: google.maps.ControlPosition.RIGHT_BOTTOM
			},
			
			streetViewControl: true,
			streetViewControlOptions: {
				position: google.maps.ControlPosition.RIGHT_BOTTOM
			}
		};
		var mapInstance = new google.maps.Map(mapDom, mapOptions);
		
		//Flags da InstÃ¢ncia Mapa
		mapInstance.lastKM = null;
		mapInstance.zoomUsed = mapInstance.getZoom();
		
		//Define local de abertura (considerando text)
		if(!Utils.queryString("initialAddress")) {
			if(Utils.verifyCall() != 'site'){
				var bool = Utils.verifyCall() == "orign"? true: false;
				if (!initialDoLink) bool = false;
				doReverseGeocode(initLatLong, bool, true, null, true);
			}
		}else{
			var bool = Utils.verifyCall() == "orign"? true: false;
			if(Utils.queryString("initialAddress").toLowerCase().indexOf('km') != -1){
				var rdv = Utils.queryString("initialAddress").replace("km", "km ");
				rdv = Utils.cleanString(rdv);
				mapInstance.lastKM = Utils.findKM(rdv);
				doRdvGeocode(rdv, bool, true, true);
				
			}else{
				var txt = Utils.queryString("initialAddress");
				txt = $.trim(txt);
				if(!isNaN(Utils.queryString("initialAddress")) && Utils.queryString("initialAddress").length > 6 && Utils.queryString("initialAddress").length < 9){
					txt = mountCEP(Utils.queryString("initialAddress"));
				}
				if(txt.indexOf("-000") != -1) txt = txt.replace("-000","");
				doGeocode(txt, bool, true, true);
			}
			mapInstance.searchedFor = Utils.queryString("initialAddress");
		}
		
		if(destLatLong){
			var bool = Utils.verifyCall() == "destiny" || Utils.verifyCall() == "consult"? true: false;
			doReverseGeocode(destLatLong, bool, false, null, true);
		}else if(Utils.queryString("destAddress")){
			var bool = Utils.verifyCall() == "destiny" || Utils.verifyCall() == "consult"? true: false;
			if(Utils.queryString("destAddress").toLowerCase().indexOf('km') != -1){
				var rdv = Utils.queryString("destAddress").replace("km", "km ");
				rdv = Utils.cleanString(rdv);
				mapInstance.lastKM = Utils.findKM(rdv);
				doRdvGeocode(rdv, bool, false, true);
			}else{
				var txt = Utils.queryString("destAddress");
				txt = $.trim(txt);
				if(!isNaN(Utils.queryString("destAddress")) && Utils.queryString("destAddress").length > 6 && Utils.queryString("destAddress").length < 9){
					txt = mountCEP(Utils.queryString("destAddress"));
				}
				if(txt.indexOf("-000") != -1) txt = txt.replace("-000","");
				doGeocode(txt, bool, false, true);
			}
			mapInstance.searchedFor = Utils.queryString("destAddress");
		}
		
		
		//Adiciona controls personalizados
		mapInstance.controls[google.maps.ControlPosition.LEFT_TOP].push($(".searchWrapper")[0]);
		
		$(zoomDivCustom)[0].index = 1;
		mapInstance.controls[google.maps.ControlPosition.RIGHT_BOTTOM].push($(zoomDivCustom)[0]);
		
		$(customSatelliteDiv)[0].index = 3;
		mapInstance.controls[google.maps.ControlPosition.RIGHT_BOTTOM].push($(customSatelliteDiv)[0]);
		
		// $(searchBar)[0].index = 1; //Estudar depois como fazer
		// mapInstance.controls[google.maps.ControlPosition.LEFT_TOP].push($(searchBar)[0]);
		var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);
		if(navigator.geolocation) {
			if(!isChrome) {
				$(geoLocateBt)[0].index = 2;
				mapInstance.controls[google.maps.ControlPosition.RIGHT_BOTTOM].push($(geoLocateBt)[0]);
			} else if (isChrome && window.location.protocol.indexOf("https") != -1 && (document.referrer != "" && document.referrer.split("//")[0].indexOf("https") != -1)) {
				$(geoLocateBt)[0].index = 2;
				mapInstance.controls[google.maps.ControlPosition.RIGHT_BOTTOM].push($(geoLocateBt)[0]);
			} else if(isChrome && window.location.protocol.indexOf("https") != -1 && document.referrer == "") {
				$(geoLocateBt)[0].index = 2;
				mapInstance.controls[google.maps.ControlPosition.RIGHT_BOTTOM].push($(geoLocateBt)[0]);
			}
		}
		
		//InstÃ¢ncia para Tooltip de Postos
		var disAutoPan = true;
		if(Utils.verifyCall() == "site") disAutoPan = false;
		var infowindow = new google.maps.InfoWindow({
			disableAutoPan: disAutoPan,
			maxWidth	  : 270,
			zIndex		  : 90
		});
		
		//InstÃ¢ncia para o Tooltip dos Pins
		var infowindowPin = new google.maps.InfoWindow({
			disableAutoPan: true,
			maxWidth	  : 270,
			zIndex		  : 90
		});
		
		//Coloca definiÃ§Ã£o dos layers de postos dentro da instÃ¢ncia do mapa, definiÃ§Ãµes em mapas_Layers.content
		mapInstance.layers = Layers.getLayers();
		for(var x = 0; x < mapInstance.layers.length; x++){
			mapInstance.layers[x].markers = [];
		}
		
		//Pin para geocoding do navegador
		var geoLocatePin = new google.maps.Marker({
			map: mapInstance, 
			draggable: false,
			zIndex: 30,
			anchorPoint: new google.maps.Point(0, -29) 
		});
		
		geoLocatePin.setVisible(false);
		geoLocatePin.setIcon(/** @type {google.maps.Icon} */({ 
		  url: 'giw2/images/ico/map/geoLocatePin.png',
		  size: new google.maps.Size(20, 20),
		  origin: new google.maps.Point(0, 0),
		  anchor: new google.maps.Point(10, 10), 
		  scaledSize: new google.maps.Size(20, 20)
		}));
		
		//Cria Pins Iniciais - TODO - Inserir mais depois
		var initialMarker = createMarkers(Utils.verifyCall(), true);
		initialMarker.setZIndex(30);
		initialMarker.used = false;
		initialMarker.dragging = false;
		
		var endMarker 	  = createMarkers(Utils.verifyCall(), false);
		endMarker.setZIndex(30);
		endMarker.used = false;
		endMarker.dragging = false;
		
		//InstÃ¢ncias Para Rotas
		var dtRenderOpt  ={
			preserveViewport :true,
			markerOptions: {
				visible: false
			}
		}
		var directionsRender = new google.maps.DirectionsRenderer(dtRenderOpt);
		
		// AutoComplete
		var autcompOpt ={	
			bounds:	mapInstance.getBounds(),
			componentRestrictions: {country: selectedCountry},
			types: []
		}
		var searchDom  = $("#iptSearch")[0];
		var searchDomOrign  = $("#iptSearchOrign")[0];
		
		$("#iptSearchOrign").keyup(function(){
			if($(this).val() == ""){
				initialMarker.setVisible(false);
				initialMarker.used = false;
				$(".rotaLinkErase").remove();
				$(".rotaLink").show();
				clearRoute();
				$(searchDomOrign).val("");
				$(".btnsHolder").hide();
			}
		});
		var autcomp = new google.maps.places.SearchBox(searchDom, autcompOpt);
		var autcompOrign = new google.maps.places.SearchBox(searchDomOrign, autcompOpt);
		
		// Listener AutoComplete
		google.maps.event.addListener(autcomp, 'places_changed', function(){ //Evento para Autocomplete Escolhido
			autocompleteListenerFct();
		});
		
		google.maps.event.addListener(autcompOrign, 'places_changed', function(){ //Evento para Autocomplete Escolhido
			autocompleteListenerFctOrign();
		});
		
		function clearRoute() {
			directionsRender.setMap(null);
			
			initialMarker.setIcon(/** @type {google.maps.Icon} */({ 
				url: defaultDetails.initialMarker.url,
				size: new google.maps.Size(defaultDetails.initialMarker.width, defaultDetails.initialMarker.height),
				origin: new google.maps.Point(0, 0),
				anchor: new google.maps.Point(17, 44), 
				scaledSize: new google.maps.Size(defaultDetails.initialMarker.width, defaultDetails.initialMarker.height)
			}));
			endMarker.setVisible(false);


		}
		
		function resolveJsonPath(path, obj) {
		    return path.split('.').reduce(function(prev, curr) {
		        return prev ? prev[curr] : null
		    }, obj || self)
		}

		// FunÃ§Ã£o de SeleÃ§Ã£o de AutoComplete, disparada pelo elemento autcomp ou pelo Enter na lista
		function autocompleteListenerFct(){
            isAutoComplete = true;
			clearRoute();
			var place = autcomp.getPlaces()[0];

			var location;
			if(place.geometry && place.geometry.location) {
				location = place.geometry.location;
			} else if (place.latLng) {
				location = place.latLng;
			}
			
			if(place.geometry){
				if(Utils.verifyCall() == 'search') placePin(place,true,true,null,true);
				else placePin(place,true,true,null,true);
			}
			
			if (place.geometry && place.geometry.viewport) {
				if(place.types[0] == "street_address") {
					mapInstance.setCenter(location);
					mapInstance.setZoom(15);
				} else {
					mapInstance.fitBounds(place.geometry.viewport);
               mapInstance.setCenter(location);
				}
			} else {
				mapInstance.setCenter(location);
				if (Utils.placeToAddress(place).attributes["City"] == "") {
					mapInstance.setZoom(13); //Se nao achar cidade afasta zoom
				} else {
					mapInstance.setZoom(15);
				}
			}

        var site = Utils.verifyCall() == "site" ? true: false;
        mapInstance.firsTime = false;
			for(var layer = 0; layer < mapInstance.layers.length; layer++){
				var layerInstance = mapInstance.layers[layer];
				if($(layerInstance.toggleElement).is(":checked")){

               if(site) {
                    mapInstance.layers[layer].canZoom = true;
               } else {
                    mapInstance.layers[layer].canZoom = false;
                } 
					refreshLayer(layerInstance);
               
				}
			}
			
         //F0124186 Adicionado dataLayer
			dataLayer = dataLayer || [];
			dataLayer.push({
				'event': 'servico.busca-mapa',
				'servico': serviceName,
				'texto': place.formatted_address
			});				

			$("#iptSearchOrign").val($("#iptSearch").val());
			//if(Utils.queryString("redeReferenciada") == undefined) {
			//		draggedMap();
			//	}
			isAutoComplete = false;
		}
		
		function autocompleteListenerFctOrign(){
			clearRoute();
			var place = autcompOrign.getPlaces()[0];
			
			if(place.geometry){
				placePin(place,true,true,null,true);
			}
		}
		
		//Function que trata busca no campo que nÃ£o for de autocomplete
		function searchDomEvent(){

        //F0124186 Adicionado dataLayer
		dataLayer = dataLayer || [];
		dataLayer.push({
			'event': 'servico.busca-mapa',
			'servico': serviceName,
			'texto': $("#iptSearch").val()
		});	

   
         var init = Utils.verifyCall() == "orign" || Utils.verifyCall() == "consult"? true: false;
		  var site = Utils.verifyCall() == "site" ? true: false;
			var bool = Utils.verifyCall() == "orign" || Utils.verifyCall() == "destiny"? true: false;
			if($(searchDom).val()) {
				if($(searchDom).val().toLowerCase().indexOf('km') != -1){
					var rdv = $(searchDom).val().replace("km", "km ");
					rdv = Utils.cleanString(rdv);
					mapInstance.lastKM = Utils.findKM(rdv);
					doRdvGeocode(rdv, bool, init, false);
				}else{
					doGeocode($(searchDom).val(), bool, init, false, site);
				}
			}

			mapInstance.searchedFor = $(searchDom).val();
			mapInstance.draggedPin = false;
			
			mapInstance.firsTime = false;
         var site = Utils.verifyCall() == "site" ? true: false;
			for(var layer = 0; layer < mapInstance.layers.length; layer++){
				var layerInstance = mapInstance.layers[layer];
				if($(layerInstance.toggleElement).is(":checked")){
               if(site) {
                    mapInstance.layers[layer].canZoom = true;
               } else {
                    mapInstance.layers[layer].canZoom = false;
                }
					refreshLayer(layerInstance);

				}
			}
		}
		
		//Listener para o Enter no campo de busca
		$(searchDom).keyup(function(e){
			if(e.keyCode == 13){
				//searchDomEvent();
			}
		});
		
		//Listener para busca na lateral
		$("#searchPoiIpt").keydown(function(evt){
			if(evt.keyCode == 13){
				doSearchFilter();
			}
			evt.stopPropagation();
			evt.stopImmediatePropagation();
		});
		
		$(".searchPoiIco").click(function() {
			doSearchFilter();
		});
		
		//Listener para o click na Lupa
		$(".searchGlassIco").click(function(){
			searchDomEvent();
		});
		
		//Controle de StreetView
		$(document).on("click",".streetView", function(){
			  panorama = mapInstance.getStreetView();
			  panorama.setPosition($(this).data('markerInfo').position);
			  dontCloseInfo = false;
			  panorama.setPov(/** @type {google.maps.StreetViewPov} */({
				heading: 265,
				pitch: 0
			  }));	
			  panorama.setVisible(true);
			  
		});
		
		$("body").on("click",".cleanSearch",function() {
			initialMarker.setVisible(false);
			initialMarker.used = false;
			$(".rotaLinkErase").remove();
			$(".rotaLink").show();
			clearRoute();
			$(searchDomOrign).val("");
			$(".btnsHolder").hide();
		});
		
		$("#closeStreetView").click(function(){
			panorama.setVisible(false);
		});
		var wasWarningShowed = false;
		google.maps.event.addListener(panorama, 'visible_changed', function(){ 
			
			if(panorama.getVisible()) {
				wasWarningShowed = $("#warningWrapper").is(":visible")? true: false;
				$("#warningWrapper").hide();
				$("#closeStreetView").show();
			} else {
				if(wasWarningShowed) $("#warningWrapper").show();
				$("#closeStreetView").hide();
			}
		});
		
		//Listener de Click no Mapa colocar Pin A - TODO - Parametrizar para apenas site
		mapInstance.addListener('click', function(e) {
			if(Utils.verifyCall() == "site") {
				//Desabilitado em Sprint de 11/16
				// infowindowPin.close();
				// initialMarker.setPosition(e.latLng);
				// doReverseGeocode(initialMarker.getPosition(), false, true,null,false,true);
				
			}
			
			if(Utils.verifyCall() == "search") {
				infowindowPin.close();
				initialMarker.setPosition(e.latLng);
				doReverseGeocode(initialMarker.getPosition(), false, true,null,false,true);
			}
		});
		
		//Listener para arrastar do Pin
		google.maps.event.addListener(initialMarker, 'dragstart', function(){ 
			infowindowPin.close();
		});
		
		google.maps.event.addListener(initialMarker, 'click', function(){ 
			if(Utils.verifyCall() == 'search') showSearchPin();
		});
		
		google.maps.event.addListener(initialMarker, 'dragend', function(){ 
			clearRoute();
			doReverseGeocode(initialMarker.getPosition(), false, true);
		});
		
		google.maps.event.addListener(endMarker, 'click', function(){ 
			markerClickEnd()
		});
		
		//Eventos de mudanÃ§a no Mapas
		google.maps.event.addListener(mapInstance, 'dragend', function(){ 
			if(Utils.queryString("redeReferenciada") == undefined) {
					draggedMap();
				} 
		});
		google.maps.event.addListener(mapInstance, 'zoom_changed', function(){ 
			if(mapInstance.searchClicking) {
				mapInstance.searchClicking = false;
			} else {
				if(Utils.queryString("redeReferenciada") == undefined) {
					draggedMap();
				}
			}
		});
		google.maps.event.addListener(mapInstance, 'center_changed', function(){ 
			if(mapInstance.firstTime) {
				if(Utils.queryString("redeReferenciada") == undefined) {
					draggedMap();
				}
			} 
			
			if(panorama) {
				panorama.setVisible(false);
			}
			
			if(infowindow) {
				if((Utils.verifyCall() == "site" && !dontCloseInfo) || Utils.verifyCall() != 'site') {
					infowindow.close();
				} 
			}
			if(infowindowPin) infowindowPin.close();
		});
		
		//Evento para quando o mapa acaba de ser carregado
		google.maps.event.addListenerOnce(mapInstance, 'idle', function(){ 
			
			$(".pac-container").eq(1).addClass("pac-container-orign");
			
			generateLateralFilters();
			
			for(var layer = 0; layer < mapInstance.layers.length; layer++){
				var layerInstance = mapInstance.layers[layer];
				
				if($(layerInstance.toggleElement).is(":checked")){
					layerInstance.showFilter = true;
					if(Utils.queryString("initialAddress") || Utils.queryString("destAddress")){
					}else{
						refreshLayer(layerInstance);
					}
				}
			}
		});
		
		//Tratativa para alteraÃ§Ãµes no mapas
		function draggedMap(){
			
			if(!isAutoComplete){
				
				mapInstance.firsTime = false;
			  var site = Utils.verifyCall() == "site" ? true: false;
				for(var layer = 0; layer < mapInstance.layers.length; layer++){
					var layerInstance = mapInstance.layers[layer];
					if($(layerInstance.toggleElement).is(":checked")){
				   if(site) {
						mapInstance.layers[layer].canZoom = true;
				   } else {
						mapInstance.layers[layer].canZoom = false;
					}
						refreshLayer(layerInstance);
					}
				}
				
			}
		
		};
		
		//Callback para retorno de Postos
		mapInstance.layerCallback = function(data, options){
			if(data.length > 0){
				options.result = [];
				var foundOne = false;
				for(var mark = 0; mark < data.length; mark++){
					var element = data[mark];
					if(element.dataInicioBloqueio && element.dataFimBloqueio){
                        var dataInicioBloqueio = new Date( element.dataInicioBloqueio );
                        var dataFimBloqueio = new Date( element.dataFimBloqueio );
                        //var dataFimBloqueio = new Date("2019-12-13T00:00:00-02:00");
                        var dataAtual = new Date();
                        
                        if(dataAtual < dataInicioBloqueio || dataAtual > dataFimBloqueio){
                            options.result.push(element);
                        }else{
                            //console.info( element.nomeFantasia + " - Loja bloqueada" );
                        }
                    }else{
					    options.result.push(element);
                    }
					
					//options.result.push(element);
					
					var pos = new google.maps.LatLng(parseFloat(element.latitude), parseFloat(element.longitude));
					if(mapInstance.getBounds().contains(pos)) foundOne = true;
				}
				
				if(mapInstance.zoomming){
					var zF = 1;
					if(!foundOne && (mapInstance.firstTime || options.canZoom)) zF = 2
					mapInstance.setZoom(mapInstance.zoomUsed - zF);
					mapInstance.zoomUsed = 0;
					mapInstance.zoomming = false;
					refreshLayer(options);
				}else{
					if(!foundOne && (mapInstance.firstTime || options.canZoom)) mapInstance.setZoom(mapInstance.getZoom() -1);
				}
				showHideLayers(options, false);
				
				options.doneLoading = true;
				mapInstance.firstTime  = false;
			}else{
				if(options.layerType == 'customService'){
					if(mapInstance.zoomUsed > 4 && (options.canZoom || mapInstance.firstTime)){
						var actualZoom;
						if(mapInstance.zoomming){
							actualZoom = mapInstance.zoomUsed;
						}else{
							actualZoom = mapInstance.getZoom();
						}
						var zoomToUse = actualZoom - 1;
						var boundsToUse = mapInstance.boundsAt(zoomToUse);
						
						var radius = (google.maps.geometry.spherical.computeDistanceBetween(boundsToUse.getNorthEast(),boundsToUse.getSouthWest()))/2;
						var latLng = {
							latitude: mapInstance.getCenter().lat(),
							longitude:mapInstance.getCenter().lng()
						}
						
						radius = radius/1000;
						radius = radius.toFixed(0);
						
						mapInstance.useMaxQtt = false;
						mapInstance.zoomming = true;
						mapInstance.zoomUsed = zoomToUse;
						
						if(radius > defaultDetails.maxRadius){
							updateLayerCount(true, false);
						}else{
							updateLayerCount(true, true);
						}
						
						mapInstance.radius = radius;
						mapInstance.latlngCenter = latLng;
						options.doneLoading = false;
						Utils.callCustomLayer(options, mapInstance);
					}else{
						if(options.canZoom || mapInstance.firstTime){
							Utils.showWarning("Nenhum posto foi encontrado com esses critÃ©rios");
							manageSizes();
							$(options.toggleElement).removeAttr("checked");
						}
						mapInstance.zoomUsed = mapInstance.getZoom();
					}
				}else{
					showHideLayers(options, true);
					updateLayerCount(false, false);
				}
				if(Utils.queryString("redeReferenciada") != undefined || Utils.queryString("redeReferenciada2") != undefined) {
					$(".listLocaleWrapper").find(".ps-subheading").text("Nenhum posto encontrado");
				}
			}
		};
		
		//FunÃ§Ã£o que plota os postos no mapa
		function showHideLayers(options, hide){
			dontCloseInfo = false;
			
			if(options.markers){ //Limpa os markers de postos guardados na instÃ¢ncia do layer
				for(var mk = 0; mk < options.markers.length; mk++){
					options.markers[mk].setMap(null);
					delete options.markers[mk];
				}
			}
			options.markers = [];
			
			if(!hide && $(options.toggleElement).is(":checked")){
				for(var x = 0; x < options.result.length; x ++){
					var element = options.result[x];
					var marker = createMarkers("layerMarker", false, options,element);
					var location = new google.maps.LatLng(parseFloat(element.latitude), parseFloat(element.longitude));
					
					marker.setPosition(location);
					marker.setVisible(true);
					marker.info = element;
					
					if(typeof  options.exibitionName === "string"){
						marker.info.layerName = options.exibitionName;
					} else {
						marker.info.layerName = options.exibitionName();
					}
					
					if (typeof options.infoWindowObs == 'function') { 
						marker.infoWindowObs = options.infoWindowObs();
					} else {
						marker.infoWindowObs = options.infoWindowObs;
					}
					
					marker.info.layerInst = options;
					marker.info.detailsPage = options.detailsPage;
					
					google.maps.event.addListener(marker, 'click', function(){ 
						markerClick(this);
					});
					// google.maps.event.addListener(marker, 'mouseover', function(){ 
						// markerOver(this);
					// });
					// google.maps.event.addListener(mapInstance, 'mousemove', function(){ 
						// markerOut(this);
					// });
					options.markers.push(marker);
				}
			
				updateListLocales();
				updateFilterList(options, false);
				refreshFilterMarkers(options);
			}
			
			if(hide && options.layerType == 'capsMKT'){
				updateListLocales();
				updateFilterList(options, true);
				refreshFilterMarkers(options);
			}
			
			if(mapInstance.radius > defaultDetails.maxRadius){
				updateLayerCount(true, false);
			}else{
				updateLayerCount(true, true);
			}
		}
		
		//Clique em Pin de Postos
		function markerClick(element){
			clearRoute();
			
			/*
			//salvar Google Analytics
			var dataLayerAux;
			var autoservico = Utils.queryString("autoservico");
			var versaoautoservico = Utils.queryString("versaoautoservico");
			if(typeof dataLayer != "undefined"){
				dataLayerAux = dataLayer;
			}else if(typeof parent.dataLayer != "undefined"){
				dataLayerAux = parent.dataLayer;
			}else if(typeof parent.parent.dataLayer != "undefined"){
				dataLayerAux = parent.parent.dataLayer;
			}else{
				dataLayerAux = [];
			}
        if(typeof autoservico != "undefined" && autoservico != ""){
				dataLayerAux.push({'event':'mapa-giw.click',
									'auto-servico':autoservico,
									'virtualPath':'/'+autoservico+'/mapa/resultados',
									'evCategory':Utils.queryString("canal") ==  "inst" ? "institucional" : "nao-especificado" +':'+ Utils.queryString("encontreCorretores") ==  "true" ? "encontre-corretor" : Utils.queryString("redeReferenciada") == "true" ? "saude-rede-referenciada" : Utils.queryString("codigoProduto") != undefined ? "busca-caps" : "nao-especificado",
									'evAction':'click:pin',
									'localidade': element.info.description + ' | ' + element.info.address
									});

			}else{
				dataLayerAux.push({'event':'mapa-giw.click',
									'auto-servico':"mapa-novo-site",
									'virtualPath':'/mapa-novo-site/mapa/resultados',
									'evCategory':'autoservs:mapa-novo-site:v1',
									'evAction':'click:pin',
									'localidade': element.info.description + ' | ' + element.info.address
									});
			}
			//fim Google Analytics
			
			*/

         //F0124186 Adicionado dataLayer
			dataLayer = dataLayer || [];
			dataLayer.push({
				'event': 'autoservicos.click',
				'evAction':'click:pin',
				'servico': serviceName,
				'localidade': element.info.description + ' | ' + element.info.address
				
			});	

			var type = Utils.verifyCall();
			var initial = false;
			if(type == "orign"){
				initialMarker.setPosition(element.position);
				initialMarker.used = true;
				//initialMarker.setVisible(true);
				initial = true;
				initialMarker.currentElement = element;
			}else{
				endMarker.setPosition(element.position);
				endMarker.used = true;
				//endMarker.setVisible(true);
				endMarker.currentElement = element;
			}
			dontCloseInfo = false;
			
			if(Utils.verifyCall() == "site"){
				dontCloseInfo = true;
				infowindow.close();
				infowindow.setContent(fillInfoWindow(element));
				// if(!window.matchMedia("(min-width: 769px)").matches) {
					// mapInstance.setCenter(element.position)
				// }
				infowindow.open(mapInstance, element);
			}
			
			doReverseGeocode(element.position, false, false,element);
			//mapInstance.draggedPin = true;
		}
		
		function markerClickEnd() {
			if(Utils.verifyCall() == "site"){
				dontCloseInfo = true;
				infowindow.close();
				infowindow.setContent(fillInfoWindow(endMarker.currentElement));
				// if(!window.matchMedia("(min-width: 769px)").matches) {
					// mapInstance.setCenter(element.position)
				// }
				infowindow.open(mapInstance, endMarker.currentElement);
			}
		}
		
		//Preenche as informaÃ§Ãµes de Postos no Tooltip
		function fillInfoWindow(marker,fromPin){
			var ret;
			ret =$('<div class=\'infoWindow\' style=\'height:230px!important;\'></div>');
			var inner = $('<div class=\'infoWindowInner\' style=\'height:calc(100% - 10px)!important;\'><div class=\'infoWindowTitle\'><strong>' + marker.info.description + '</strong><p><strong>'+marker.info.layerName+'</strong></p></div>');
			
			$("<p>" + marker.info.address + "</p>").appendTo(inner);
			$("<p>" + marker.info.phone + "</p>").appendTo(inner);
			
			var str = "";
			if(marker.infoWindowObs){
				for (var facetGroup in marker.infoWindowObs){
					
					var foundAny = false;
					var results = new Array();
					for(var filter in marker.infoWindowObs[facetGroup]){		
					  
						var gp = marker.infoWindowObs[facetGroup][filter];
						var name = gp.name;
						var root ="";
						if(gp.root) root = gp.root;
						var txt = facetGroup;
						
						for(var opt in gp.options){
							
							var val = gp.options[opt].val;
							obj = marker.info;
							if(root) obj = obj[root];
							var name2 = null;
							var val2 = null;
								
							if(gp.options[opt].field2)  name2 =  gp.options[opt].field2;
							if(gp.options[opt].val2)  val2 =  gp.options[opt].val2;
							 
							if(obj){
								if(obj[name]){
										
									if(gp.options[opt].operator == "equals"){
										if(obj[name][0] == val){
											foundAny = true; 
											results.push(gp.options[opt].name); 
										}
									}
									
									if(gp.options[opt].operator == "array_equals") {
										var foundArrEq = false;
										for (var arrX = 0; arrX < obj[name].length; arrX++) {
											if(obj[name][arrX] == val) {
												foundArrEq = true;
												foundAny = true;  
												break;
											}
										}
										if(foundArrEq) results.push(gp.options[opt].name); 
									}
									
									if(gp.options[opt].operator == "notarray_equals") {
										var foundArrEq = false;
										for (var arrX = 0; arrX < obj[name].length; arrX++) {
											if(obj[name][arrX] == val) {
												foundArrEq = true;
												
												break;
											} else if(obj[name][arrX]) {
												foundAny = true;  
											}
										}
										if(!foundArrEq) results.push(gp.options[opt].name); 
									}
									
									if(gp.options[opt].operator == "Nequals"){
										if(obj[name][0] != val){
											foundAny = true; 
											results.push(gp.options[opt].name);
										}
									}
									
									if(gp.options[opt].operator == "partial"){
										if(obj[name][0].indexOf(val) != -1){
											foundAny = true; 
											results.push(gp.options[opt].name);
										}
									}
									
									if(gp.options[opt].operator == "greater"){
										if(obj[name][0] > val){
											foundAny = true; 
											results.push(gp.options[opt].name);
										}
									}
										
									if(gp.options[opt].operator == "original"){
										
										foundAny = true; 
										results.push(gp.options[opt].name);
									}
										
									if(gp.options[opt].operator == "dbetween"){
										if(obj[name2][0]){
										  if(Utils.parseDate(obj[name][0]) < val && val < Utils.parseDate(obj[name2][0])){
											foundAny = true; 
											results.push(gp.options[opt].name);
										  }
										}else{
										 foundAny = true; 
										 results.push(gp.options[opt].name); 	
										}
									}
									if(gp.options[opt].operator == "dnbetween") {
										
										if(obj[name2]){
										   
											if(Utils.parseDate(obj[name][0]) > val  || val > Utils.parseDate(obj[name2][0])){	
												foundAny = true; 
												results.push(gp.options[opt].name); 
											}
										}
									}
								} else if(gp.options[opt].operator == "dnbetween") {
									if(!obj[name2]) { 
										foundAny = true; 
										results.push(gp.options[opt].name); 
									}else if(!obj[name2][0]){
										foundAny = true; 
										results.push(gp.options[opt].name); 
									}else{
										if(Utils.parseDate(obj[name][0]) > val  || val > Utils.parseDate(obj[name2][0])) {
											foundAny = true; 
												results.push(gp.options[opt].name); 
										}
									}
								}
							}
						}
					}	
					
					if(foundAny) {
						str += "<p>" + facetGroup;
						
						for (var x = 0; x < results.length; x++){
							str+= results[x];
							if(x != results.length-1) str+= ", ";
						}
						
						str+= "</p>";
					}
				}
				if(str) {
					$("<p>" + str + "</p>").appendTo(inner);
				}
			}
			
			$("<a href='#' class='infoWindowLink'>Ver Detalhes</a>").data('markerInfo', marker).appendTo(inner);
			
			$(inner).appendTo(ret);
			
			//if(endMarker.info && endMarker.info.info){
				// if(endMarker.used && initialMarker.used && (endMarker.info.info.latitude == marker.info.latitude && endMarker.info.info.longitude == marker.info.longitude)){
				// if(endMarker.used && initialMarker.used){
				if(endMarker.used){
					//if(Utils.verifyCall() != 'exibit') {
						$("<a href=\'#\' class=\'\' style=\'position: absolute; bottom: 0; left: 0;\'>Tra&ccedil;ar Rota</a>").data('markerInfo', marker).appendTo(ret).click(function(){ 
							if(initialMarker.used) {
								doRoute(true);
							} else {
								$(".sidebarWrapperInner").animate({ 
									left: "0",
								}, 400 );
								$(".sidebarWrapper").fadeIn();
								$(searchDomOrign).focus();
							}
						});
					//} else {
						//calcRoute(true);
					//}
				}
			//}
			
			$("<a href=\'#\' class=\'streetView\' style=\'position: absolute; bottom: 0; right: 0;\'>Visão da Rua</a>").data('markerInfo', marker).appendTo(ret);
			$("</div>").appendTo(ret);
			
			return $(ret).get(0);
		}
		
		//Evento para abrir a tela de detalhes
		$(document).on("click",".infoWindowLink", function(e){
			/*salvar Google Analytics
			var dataLayerAux;
			var autoservico = Utils.queryString("autoservico");
			var versaoautoservico = Utils.queryString("versaoautoservico");
			if(typeof dataLayer != "undefined"){
				dataLayerAux = dataLayer;
			}else if(typeof parent.dataLayer != "undefined"){
				dataLayerAux = parent.dataLayer;
			}else if(typeof parent.parent.dataLayer != "undefined"){
				dataLayerAux = parent.parent.dataLayer;
			}else{
				dataLayerAux = [];
			}
			if(typeof autoservico != "undefined" && autoservico != ""){
				dataLayerAux.push({'event':'autoservicos.click',
									'auto-servico':autoservico,
									'virtualPath':'/'+autoservico+'/mapa/resultados',
									'evCategory':'autoservs:'+autoservico+':'+versaoautoservico,
									'evAction':'click:ver-detalhes'
									});
			
			}else{
				dataLayerAux.push({'event':'autoservicos.click',
									'auto-servico':"mapa-novo-site",
									'virtualPath':'/mapa-novo-site/mapa/resultados',
									'evCategory':'autoservs:mapa-novo-site:v1',
									'evAction':'click:ver-detalhes'
									});
			}


         
			// fim Google Analytics */

        

			var marker = $(this).data("markerInfo");
			var frame;

        //F0124186 Adicionado dataLayer
			dataLayer = dataLayer || [];
			dataLayer.push({
				'event': 'autoservicos.click',
				'evAction':'click:ver-detalhes',
				'localidade': marker.info.description + ' | ' + marker.info.address,
				'servico': serviceName
			});	

        dataLayer.push({
            event: 'solicitacao_servico',
            nome_servico: 'busca-de-centros-automotivos-centro-automotivo',
            tipo_servico: 'busca-caps',
            acao: 'click:caps:menu-lateral',
            produto: 'centro-automotivo',
            localidade: marker.info.description + ' | ' + marker.info.address
         });
   
        if(typeof  marker.info.detailsPage	 === "string"){
				frame = $("<div class='detailsFrame'><iframe src='"+marker.info.detailsPage+marker.info.code+"&type="+Utils.verifyCall()+"'  height='98%'  width='100%' frameborder='0' ></iframe></div>");
			}else{
				var obj = marker.info.detailsPage();
				var url = obj.url;
				if(url.indexOf("?") == -1) url += "?";
				for(var z in obj.params){
					url+= obj.params[z].name;
					url+= "=";
					//url+= marker.info[obj.params[z].value];//thiago
					url+= resolveJsonPath(obj.params[z].value,marker.info);
					url += "&";
				}

				if (marker.info.InscricaoConselhoRegional && marker.info.InscricaoConselhoRegional.length > 0)
				{
					url += "Crm=";
					url += marker.info.InscricaoConselhoRegional[0];
					url += "&";
				}

				url += "type=";
				url += Utils.verifyCall();
				frame = $("<div class='detailsFrame'><iframe src='"+url+"' height='98%'  width='100%' frameborder='0' ></iframe></div>");
			}
			if(window.matchMedia("(min-width: 769px)").matches) {
				if(typeof marker.info.detailsPage === "function" && marker.info.detailsPage().modalPage){
					var canAccessParent = false;
					
					try {
						if(typeof parent.abrirModalFrame != "undefined"){
							canAccessParent = true;
						}
					} catch(e) {
						
					}
					
					if(canAccessParent || self == parent){
						if(typeof parent.abrirModalFrame != "undefined"){
							parent.abrirModalFrame(url);
						} else if(typeof abrirModalFrame != "undefined"){
							abrirModalFrame(url);
						}else{
							$(frame).dialog({
								width:'70%',
								height:550,
								modal: true,
								resizable: false,
								close: function(){
									$(frame.remove());
								}
							});
						}
					} else {
						$(frame).dialog({
							width:'70%',
							height:550,
							modal: true,
							resizable: false,
							close: function(){
								$(frame.remove());
							}
						});
						// var postReturn = {}
						// postReturn.message = "showgiwmodal";
						// postReturn.modalurl = url;
						// window.parent.postMessage(JSON.stringify(postReturn), "*");
					}
				}else{
					$(frame).dialog({
						width:'70%',
						height:550,
						modal: true,
						resizable: false,
						close: function(){
							$(frame.remove());
						}
					});
				}
			} else {
				if(typeof marker.info.detailsPage === "function" && marker.info.detailsPage().modalPage){
					var canAccessParent = false;
					
					try {
						if(typeof parent.abrirModalFrame != "undefined"){
							canAccessParent = true;
						}
					} catch(e) {
						
					}
					
					if(canAccessParent || self == parent){
						if(typeof parent.abrirModalFrame != "undefined"){
							parent.abrirModalFrame(url);
						} else if(typeof abrirModalFrame != "undefined"){
							abrirModalFrame(url);
						}else{
							$(frame).dialog({
								width:'70%',
								height:550,
								modal: true,
								resizable: false,
								close: function(){
									$(frame.remove());
								}
							});
						}
					} else {
						$(frame).dialog({
							width:'70%',
							height:550,
							modal: true,
							resizable: false,
							close: function(){
								$(frame.remove());
							}
						});
						// var postReturn = {}
						// postReturn.message = "showgiwmodal";
						// postReturn.modalurl = url;
						// window.parent.postMessage(JSON.stringify(postReturn), "*");
					}
				}else{
					var hgt = parseInt($(window).outerHeight()) + 58;
					$(frame).dialog({
						width:'85%',
						height: hgt,
						position: { my: "left top", at: "left top", of: window },
						modal: true,
						resizable: false,
						close: function(){
							$(frame.remove());
						}
					});
				}
			}
			
			e.preventDefault();
			e.stopImmediatePropagation();
			e.stopPropagation();
			return false;
		});
		
		//Coloca pin no local e pode centralizar mapa
		function placePin(place, centerMap, initial, extraInfo, showPin) {
			if(Utils.verifyCall() == 'search') {
				infowindowPin.close();
			}
			
			var location;
			if(place.geometry && place.geometry.location) {
				location = place.geometry.location;
			} else if (place.latLng) {
				location = place.latLng;
			}
			
			var marker = initial?initialMarker:endMarker;
			//marker.setVisible(false);
			marker.setPosition(location);
			marker.used = true;
			marker.place = place;
			
			clearRoute();
			
			if(initialMarker.used && endMarker.used) manageRouteDist();
			
			if(centerMap) {	
				if (place.geometry && place.geometry.viewport) {
					if(place.types[0] == "street_address") {
						mapInstance.setCenter(location);
						mapInstance.setZoom(15);
					} else {
						mapInstance.fitBounds(place.geometry.viewport);
					}
				} else {
					mapInstance.setCenter(location);
					if (Utils.placeToAddress(place).attributes["City"] == "") {
						mapInstance.setZoom(13); //Se nao achar cidade afasta zoom
					} else {
						mapInstance.setZoom(15);
					}
				}
				if(Utils.queryString("redeReferenciada") == undefined) {
					draggedMap();
				}
			}
			
			if(showPin) marker.setVisible(true); //Alterado para nÃ£o exibir Pin, apenas no momento de traÃ§ar rota
			
			initial?fillOrign(place, false, extraInfo, false):fillDest(place, false, extraInfo) //Preenche campo origem com endereÃ§o
			
			//Se for tipo Busca mostra tooltip de localizaÃ§Ã£o
			if(Utils.verifyCall() == 'search') {
				showSearchPin();
			}
			 
		}
		
		function doReverseComplete(latlng, place, mapInstance){
			
			geocoder.geocode({'latLng': latlng}, function(results, status) {
				if (status == google.maps.GeocoderStatus.OK){
					var choosenResult;
					for(var res = 0; res < results.length; res++){
						if(results[res].types[0] == 'street_address'){
							choosenResult = results[res];
							break;
						}
					}
					if(!choosenResult) choosenResult = results[0];
					if (choosenResult) {
						
						foundPostal  = "";
						
						for(var x = 0; x < choosenResult.address_components.length; x++){
							var plc = choosenResult.address_components[x];
							
							if(plc.types[0] == "postal_code_prefix"){
								foundPostal = plc;
								continue;
							}else if(plc.types[0] == "postal_code"){
								foundPostal = plc;
								continue;
							}
						}
						
						if(Utils.missingPostal(place)) place.address_components.push(foundPostal);
					}
				} else {
					console.log('Geocoder failed due to: ' + status);
				}
			});
		};
		
		//FunÃ§Ã£o que exibe botÃµes de rota
		function manageRouteDist() {
			$(".btnsHolder").show();
			doRoute(false);
			manageSizes();
		}
		
		$("body").on("click",'.ui-widget-overlay',function() {
			$(".ui-dialog-content").dialog("close");
		});
		
		//Listener de rota
		$("body").on("click",".icoRota",function() {
			doRoute(true);
		});
		$("body").on("click",".rotaLink",function() {
			doRoute(true);
		});
		
		//TraÃ§a Rota
		function doRoute(show) {
			var start = initialMarker.getPosition();
			var end = endMarker.getPosition();
			var request = {
				origin:start,
				destination:end,
				travelMode: google.maps.DirectionsTravelMode.DRIVING	  
				  
			};
			directionsService.route(request, function(response, status) {
				if (status == google.maps.DirectionsStatus.OK) {
					if(show){
						directionsRender.setDirections(response);
						directionsRender.setMap(mapInstance);
						$(".sidebarWrapperInner").animate({ 
							left: "-2000",
						}, 400 );
						$(".sidebarWrapper").fadeOut();	

							initialMarker.setIcon(/** @type {google.maps.Icon} */({ 
                       url: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAsCAYAAAAATWqyAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABedJREFUeNq0WG9IXEcQf/fuzuZOzZ0xbdWES2PTaiNqYkApLaSkCgmlghSFUiLBD7EU+klo7Jf2cyhSQfrBfClIrdBIy4Ei6AURsSHGi/XaqNSo+A9NVDy988+dp9uZfbvPd+/+vPfEDgz7bnd25nezs7OzayGECMnIBKT4KWKXohXGxsZysC0uLl6C5hCYsJYS0TAgq0e5eMwMIZuBrcCnWlpaclZWVr7e2dlxHxwcvCIqOjw8fBkKhf4IBAJf9vf3n2VzqZ4kdhIDUfxrBGDv6ekpAuW/kXi0uChxHAJQvy4sLLzDPWgICANhAX4NOH15efk7+KdBqjkSIaSri5A7dwjJykLpaMY+HEOZUIh7Kbi7u/st02nSBUQBwgac4ff7O+W/19ZGyMWLscYTMcriHEbhcLg9HpgYIAoQduDMzc3NPqohECCkqko/ADVXVko6gPb397vUYKKAqDyRub6+/ru8/oWFxwfBGXWwOFJ7Rg1EZDHhHB8f/0b2xEmAUIJhntne3q5Hm+qdzb2RDpwDu+MvKo1Bd1IgOKNOaYmecK8IqiR1Cvjs1NTUj1RydFRbaW5u9F69d08fGNQNBDvpe2ZbJu6N8xsbG14qdfOmtkI0rKSREX1AULfklT/VXsHYyGxtbf2ESryChGk2ayvskzaV3CKhl/SAmZmh4pDsSjkQkafwkpKS9ymszk5BODhIev4IubmCUF4ufd+/LwgzM9J3dbWgi7q7aeNwOD6MAZKdnV1CRx8/1lbEDSIAj0dipLt39QEZHqaN1WqN8gg9U+x2u4uOvnihH8jDh9EteuraNe35s7NScFosF9RAzNBpo6PBoPaycGPcE9gaWZ7NTf51Wl1fmOBwitCelBR93kDq6zsKQQSoFwizgZtH6RFMb5jt1unouXP6gWgFciJiNuDPLys9Qiuq1dVVKTgKCxMrwCXhy1Jfj+VVNOtdHmZjb2/vObNPgeBejfh8vlE6WlWVWAH/pxsbgvDgQew4jxktIBUVtIHjZEjZjcc+1p1Xg8HgCs00ieqO6emjJBZvvLz8KLlVV8eXcbmkAgvo1q1bp5VpHjPr68DvTU9PS2mytfXkDzzOqFs6gTuZbTnFY13qAL7Q2Nj4uVwSXr588iBQJ/PG4OBgGbMtAzGz5XkTuGBycrKbSvp8hKSlnRwI1IU6gaD6a2M2zep6JIV7xWazlcKVYZzOcLv1HYBajDpQFxBcRYZdLlcGs2lSAzHzMhH4Ul1d3WeYV+jM3l5Czpw5Pgic++gRP/pXOjo6rjJb5iggqpo1FfgN4LyGhoYvtra2lqmGqSlCrl83DgLn4FwgyBkzbrf7A2Yjfs2qqFutrEjCeMmrqan5dGlpaVTekj09UlVusyU2jmMog7KMICaGmpqaipluK69Xk10nRLZ2acwzbwOXeL3eXyD5vJQ17+wQcvt2LAjswzFG4IXF+fn5n5iuNKZbTHidSHTVZDFzHnNMUVHRxx6P5+fZ2dnn1Ep7eywQ7AOC42J4YmLih8rKyjymw849oXnBinP5trCiOp39o0vAZbW1tV9Ra5OTsUCwD6i5ubmCzUlnOiyJLuNJL+EJvIO3+3edTudHctJzOKLzBEtWBQUFWcm8YAhInKcJ+UyCi7mUmW7cOAKC31KeGFIkq6RPEkogYrJDkgcde3jBwikEvLu2tvYvFbhy5UiYfUOuGGOyh4r5miTqEVKAoSUDHI4+OlBaeiTEvmGrjnAQggESDcgSBmR/YGDgb7lQUhZNQHNzc15e7Bghk17gJpOJX02d+HYSiUSemM3mVMHplAT8fvRcQBRFDNQ9fKPRqfdYHpFjBdL/P/KSMG+EQiGf4kHPEFkMyqMRrLz3AIgvIyOjTLk84XD4qfJF8X+JEfXu8fv9XnVBDSf2s+MEqtGl4ctDgUAB9VQNBPLLyHGWRTOhJUhwVlZPpMOh5uG5AvJHLy/9DOo0tmsUr9CikuFkfis1NfUwPz9/hi2doaXhu+Y4QJTnkDqQiZ5n73hA/hNgADGDsByTtUaFAAAAAElFTkSuQmCC',
                       size: new google.maps.Size(defaultDetails.initialMarker.width, defaultDetails.initialMarker.height),
                       origin: new google.maps.Point(0, 0),
                       anchor: new google.maps.Point(17, 44), 
                       scaledSize: new google.maps.Size(defaultDetails.initialMarker.width, defaultDetails.initialMarker.height)
                     }));

						initialMarker.setVisible(true);
					
							endMarker.setIcon(/** @type {google.maps.Icon} */({ 
                       url: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAsCAYAAAAATWqyAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABdFJREFUeNq0WOtLHFcUn33ZrI/sbkxbNcE0Nq02oiYaFKmQkqYQKRWkRCglEvxgS6EfilDtl/YPKFJB+sFPhaVWSKRFUAQ1GJE0xLix2kSl1hVfaOJr1fWxunp7zp1zx3F2d/aBPXCY2Zlzz/ntuef+7rljYIxJemIAUf004iPVVRoeHk7Da15e3jxcDkEZXbmwMAEU92gXTCkQqgnUAnqqsbExbXFx8evt7e22g4ODV0wjh4eHL30+3x+bm5tf9vb2nqWx3I9OnNBAVP8aAcR3dnbmgvN7LJjMzckaRADUb7Ozs++IDEYFhECYQV8DTVpYWPge/qmXe/b7GWtvZ+zuXcZSUtD6uOIzfIc2Pp/IkndnZ+c78mmICIgKhBXU4fF4WpW/53QydvFiYPBQirY4hmRvb685GJgAICoQ8aDJ6+vr3dzD5iZj5eWRA9BqWZnsA2R/f79dC+YYEE0mkldWVn5X5j8nJ3YQQtEH1ZE2M1ogRqoJ++jo6LdKJk4ChBoMZWZra+sLjKld2SIbSaBpsDr+4tZYdCcFQij6lKfoiciKpCGpU6BnJyYmfuKWQ0OhnQ0OspByD1a4w6EPBn2DwEr6gWIrIrJxfm1tzcWtbt2KDQgKvtcDgr7lrPypzQrWRnJTU9PH3OIVEKbJFB5Ibe3x59XVR2AKCvTBuN3cDMiuUAAxCgrPz88v5rBaWyXp4ECKWu7fj9y2o4NfbDZbSQCQ1NTUfP728WMpJqmulq9utyS5XPq2AwP8YrFYCtVTYwPNWF1dfc7zVVysn1a9GlldZez27fCrp6RE1MljqhOeEZ4Vs9ls5bC8XilmcTiOMqMn6+vi7rS2vzDA5uTnT+LiIgtaV4fNxJFeuyZPy82bklRbqz+WYmBS1DWC9IZst8LfnjsXWzawLkTBFhTo21IM+PML6ozwjmppaelf/iQnJzYgGRlyNgQoPaEYu7u7Lyg+FySzC06n85uICCkcoWHBZmTo+3j4UPBIuShWibZ97Duver3eRW6h13foAenuDk9m6elygwVSWlp6Wk3zyKyvg743OTkp9yBNTSe/4QlF3/IO3EqxFR6xEJdcqKur+0xpCS9fPnkQ6JOy0d/fX0SxFSAmmp43QbPHx8c7uOXICGOJiScHAn2hTxDo/pwU06TtR+JEVqxWayEcGUb5iLY2/Q0wUkUf6AsEjiID6enpDopp0AIxiTYR9FJVVdWnyCt8ZFcXY2fOxA4Cxz54ICh9saWl5SrFMh0DoulZE0DfAM2sqan5fGNjY4F7mJhg7Pr16EHgGBwLApzhbmtre59iBO9ZVX2rhXgF6yWzoqLik/n5+SFleXZ2yl251Ro6OL5DG7QlgZp4VF9fn0e+LaJf1TtOGGnuEikzb4Pmu1yuX6GXfal43t5m7M6dQBD4DN+RQBbmZmZmfiZfieTbGPI4EeqoSTVzHjkmNzf3w56enl+mpqZe8CjNzYFA8BkIbBcDY2NjP5aVlWWSj3iRibAHrCCHbzM11Un0jy6BFlVWVn7Fo42PBwLBZyANDQ0f0Zgk8mEOdRjXPYSHyA6e7t+12+0fKKRnsx3nCSKr7OzsFL0sRAUkyKcJZU+Cg7nMTDduHAHBe5knHqnISveThBqIUW+3FkVHH16wcfKB7iwvL//DDa5cOTKme+CKYbI9VI0PK8ZIjFRgsL33w+Y4wl8UFh4Z0T0s1UEBIpp2xhiFLSMg+319fX8HdGJ0Pz097VI3O5GKIVLgBoNBHE3t2Cb7/f4nJpMpQbLbZQOPBzO3aTQasVB38RtNhH5jyohSK0D/z5UpoWz4fL4R1Qe9qMQcpT0Gwc57F4CMOByOIvX07O3tPVV/UfxfakS7ejwej0upDQIDO/azWAo12qkR08OBQAP1VAsE+GUwlmkJS2ghCM5C/UQSbGo9giuAP7pE6xelz+hWjeortFGtsDO/lZCQcJiVleWmqYtqasSqiQWIeh/SFjKL5LN3MCD/CTAAkwNMnVR6vK8AAAAASUVORK5CYII=',
                       size: new google.maps.Size(defaultDetails.endMarker.width, defaultDetails.endMarker.height),
                       origin: new google.maps.Point(0, 0),
                       anchor: new google.maps.Point(17, 44), 
                       scaledSize: new google.maps.Size(defaultDetails.endMarker.width, defaultDetails.endMarker.height)
                     }));

						endMarker.setVisible(true);		
						
						$(".rotaLinkErase").remove();
						$(".rotaLink").hide();
						$('<span class="rotaLinkErase"><a href="javascript:;">Apagar Rota</a></span>').appendTo($('.rotaLink').parent()).click(function(){
							clearRoute();
							$(".rotaLink").show();
							$(this).remove();
						});
					}else{
						var legs = response.routes[0].legs;
						var dist = 0;
						for(var x=0; x< legs.length; x++){
							dist += legs[x].distance.value;
						}
						var dist = dist/1000;
						dist = dist.toFixed(1);
						dist = dist.toString().replace(".",",");
						initialMarker.distance = dist;
						$(".distDivValue").html(dist + "Km");
					}
				}
			});
		};
		
		//FunÃ§Ã£o apenas para tipo Busca, mostra tooltip com localizaÃ§Ã£o
		function showSearchPin() {
			infowindowPin.close();
			
			if (timeOutActionPin !== undefined) {
				window.clearTimeout(timeOutActionPin);
			}
			
			if(Utils.missingPostal(initialMarker.place)){
				doReverseComplete(initialMarker.place.geometry.location,initialMarker.place,mapInstance);
			}
			
			timeOutActionPin = window.setTimeout(function(){
				infowindowPin.close();
				var ret = $('<div class=\'infoWindowPin\'>'+initialMarker.addr+'<br/><p></p></div>');
				$("<p><a href='javascript:;' class='searchSelectAddrt'>Selecionar este endereÃ§o</a></p><br/><p></p>").appendTo(ret);
				//$("<a href=\'#\' class=\'traceRouteTooltip\' style=\'position: absolute; bottom: 0; left: 0;\'>TraÃ§ar Rota</a>").data('markerInfo', initialMarker).appendTo(ret);
				$("<a href=\'#\' class=\'streetView\' style=\'position: absolute; bottom: 0; right: 0;\'>VisÃ£o da Rua</a>").data('markerInfo', initialMarker).appendTo(ret);
				infowindowPin.setContent($(ret).get(0));
				infowindowPin.open(mapInstance, initialMarker);
			}, 480); 
		}
		//Lister para 'selecionar endereÃ§o'
		$("body").on("click",".searchSelectAddrt",function() {
			if(!Utils.missingPostal(initialMarker.place)) {
				returnToCaller(initialMarker.place, 'search', '', '')
			}
		});
		
		//FunÃ§Ã£o que preenche campo de Origem e deixa clicÃ¡vel dependendo do paramÃªtro TODO
		function fillOrign(place, link, extraInfo, forceInit) {
			var orignIptHolder = $(".orignValueWrapper span input");
			var formattedAddr = Utils.createAddressStr(place);
			initialMarker.used = true;
			// if(forceInit){
				// formattedAddr = "Busque um EndereÃ§o de Origem ao lado";
				// $("#iptSearch").focus();
				// initialMarker.used = false;
			// }
			
			if(extraInfo) {
				showWithExtra = true; 
				formattedAddr = "<b>" + extraInfo.info.description + " - </b>" + formattedAddr;
			} else {
				showWithExtra = false; 
			}
			
			if(initialMarker.used && endMarker.used) manageRouteDist();
			
			initialMarker.addr = formattedAddr;
			$(orignIptHolder).val(formattedAddr);
			updateListLocales();
		};
		
		//FunÃ§Ã£o que preenche campo de Destino e deixa clicÃ¡vel dependendo do paramÃªtro TODO
		function fillDest(place, link, extraInfo) {
			var destTextHolder = $(".destValueWrapper span");
			var formattedAddr = Utils.createAddressStr(place);
			endMarker.addr = formattedAddr;
			
			if(extraInfo) {
				showWithExtraDest = true; 
				if(extraInfo.icon && extraInfo.icon.url) $(".destWrapper .pinImg").attr("src",extraInfo.icon.url);
				else $(".destWrapper .pinImg").attr("src","giw2/images/ico/map/red.png");
				formattedAddr = "<b>" + extraInfo.info.description + " - </b>" + formattedAddr;
			} else {
				showWithExtraDest = false;
				$(".destWrapper .pinImg").attr("src","giw2/images/ico/map/red.png");
			}
			
			$(destTextHolder).html(formattedAddr);
			endMarker.used = true;
			if(initialMarker.used && endMarker.used) manageRouteDist();
			updateListLocales();
		};
		
		google.maps.Map.prototype.boundsAt = function (zoom, center, projection, div) {
			var p = projection || this.getProjection();
			if (!p) return undefined;
			var d = $(div || this.getDiv());
			var zf = Math.pow(2, zoom) * 2;
			var dw = parseInt(d.css('width'))/ zf;
			var dh = parseInt(d.css('height')) / zf;
			var cpx = p.fromLatLngToPoint(center || this.getCenter());
			return new google.maps.LatLngBounds(
				p.fromPointToLatLng(new google.maps.Point(cpx.x - dw, cpx.y + dh)),
				p.fromPointToLatLng(new google.maps.Point(cpx.x + dw, cpx.y - dh)));
		}
		
		//FunÃ§Ã£o que gerencia criaÃ§Ã£o dos Pins
		function createMarkers(type, initial, options,element){
			
			var url;
			var width;
			var height;
			var draggable = false;
			var zindex = 0;
			if(type == 'layerMarker') {
				url 	= eval(options.marker())().url;
				width 	= eval(options.marker())().width;
				height 	= eval(options.marker())().height;
				zindex = 2; //Garante que alfine apareÃ§a abaixo dos alfinetes de endereÃ§o
			} else {
				if(initial) {
					url 	= defaultDetails.initialMarker.url;
					width 	= defaultDetails.initialMarker.width;
					height 	= defaultDetails.initialMarker.height;
				} else {
					url 	= defaultDetails.endMarker.url;
					width 	= defaultDetails.endMarker.width;
					height	= defaultDetails.endMarker.height;
				}
				zindex = 1; //Garante que alfine apareÃ§a acima dos alfinetes de endereÃ§o
			}
			
			if(initial && Utils.verifyCall() == 'exibit') url = 'giw2/images/ico/map/caps.png';
			
			if(type == 'destiny' && !initial) draggable = true;
			else if((type == 'orign' || type == 'site') && initial) draggable = true;
			else if(type == 'consult' || type == 'search') {
				draggable = true;
				if(!initial && Utils.queryString("dragB") == 'false') {
					draggable = false;
				}
			} else if(type == 'layerMarker') draggable = false;
				
			var marker = new google.maps.Marker({
				map: mapInstance, 
					draggable: draggable,
				zIndex: zindex,
				zIndex: zindex,
				anchorPoint: new google.maps.Point(0, -29) 
			});
			
			marker.setVisible(false);
			marker.setIcon(/** @type {google.maps.Icon} */({ 
			  url: url,
			  size: new google.maps.Size(width, height),
			  origin: new google.maps.Point(0, 0),
			  anchor: new google.maps.Point(17, 44), 
			  scaledSize: new google.maps.Size(width, height)
			}));
			
			return marker;
		}
	
		
		function centerExibit() {
			var pointA = initialMarker.getPosition();
			var pointB = endMarker.getPosition();
			
			if(pointA && pointB) {
				var bounds = new google.maps.LatLngBounds();
				bounds.extend(pointA);
				bounds.extend(pointB);
				mapInstance.fitBounds(bounds);
				//mapInstance.setZoom(mapInstance.getZoom() - 2);
			}
		}
		
		function doReverseGeocode(latlng, doLink, initial, extraInfo, putpin, clickMap) {
			
			var siteNotInitial = false;
			if(putpin) {
				if(initial) {
					if(Utils.queryString("latitude") && Utils.queryString("longitude")) {
						initialMarker.setPosition(latlng);
						initialMarker.used = true;
						//initialMarker.setVisible(true);
					} else {
						siteNotInitial = true;
					}
				} else {
					endMarker.setPosition(latlng);
					endMarker.used = true;
					//endMarker.setVisible(true);
				}
				
				if((initial && (Utils.verifyCall() == "orign" || Utils.verifyCall() == "consult")) || (!initial && Utils.verifyCall() == "destiny")){
					mapInstance.setCenter(latlng);
				}else if(initial && Utils.verifyCall() == "destiny" && !Utils.queryString("destAddress")){
					mapInstance.setCenter(latlng);
				}else if(!initial && (Utils.verifyCall() == "orign" || Utils.verifyCall() == "consult") && !(Utils.queryString("initialAddress") || Utils.queryString("latitude"))){
					mapInstance.setCenter(latlng);
				} else if(Utils.verifyCall() == 'exibit') {
					centerExibit();
				}
			}
			
			geocoder.geocode({'latLng': latlng}, function(results, status) {
				if (status == google.maps.GeocoderStatus.OK){
					var choosenResult;
					for(var res = 0; res < results.length; res++){
						if(results[res].types[0] == 'street_address'){
							choosenResult = results[res];
							break;
						}
					}
					if(!choosenResult) choosenResult = results[0];
					if (choosenResult) {
						if(clickMap) {
							placePin(choosenResult, false, initial, extraInfo);
						} else {
							if(initial){ 
								if(siteNotInitial) fillOrign(choosenResult, doLink, extraInfo,true);
								else fillOrign(choosenResult, doLink, extraInfo,false);
								
							}else fillDest (choosenResult, doLink, extraInfo);
						}
					}
				} else {
					console.log('Geocoder failed due to: ' + status);
				}
			});
		};
		
		function doGeocode(address, doLink, initial, fromParam, isSite){
			var cntry = Utils.queryString("country") ? Utils.queryString("country") : "br";
			geocoder.geocode({'address': address, componentRestrictions :{country: cntry} }, function(results, status) {
				if (status == google.maps.GeocoderStatus.OK) {
					if(fromParam){
						mapInstance.firstTime = true;
						var boolLvl = results[0].geometry.location_type == "ROOFTOP" || results[0].types[0] == 'route'|| results[0].types[0] == 'street_address'|| results[0].types[0] == "sublocality_level_5" ? true: false;
						
						if(boolLvl) {
							mapInstance.searchLevel = 3;
						} else if(results[0].types[0] == 'sublocality_level_1' || results[0].types[0] == 'sublocality') {
							mapInstance.searchLevel = 4;
						} else {
							mapInstance.searchLevel = 1;
						}
						
					}
					var res = results.length == 1? true: false;
					if(results.length > 1) {
						for(var resCont = 1; resCont < results.length; resCont++) {
							if(results[resCont].types[0] == "transit_station" || results[resCont].types[0] == "establishment") {
								res = true;
							} else {
								res = false;
							}
						}
					}
					// if(results.length == 1 || !fromParam){ //Alterado para maior Igual
					if(res || !fromParam){
						//var valid = validateGeocode(results[0]);
						var valid = true;//Alterado apÃ³s retirada do Reverse
						var bool =true // Desabilita Reverse
						if(valid){
							if(initial){
								initialMarker.setPosition(results[0].geometry.location); 
								if(bool) fillOrign(results[0], doLink, null, false);
								else doReverseGeocode(results[0].geometry.location, doLink, initial, null, false);
								initialMarker.used = true;
								//initialMarker.setVisible(true); 
							} else if(isSite) {
								placePin(results[0],true,true,null,true);
							} else {
								endMarker.setPosition(results[0].geometry.location);
								if(bool) fillDest (results[0], doLink);
								else doReverseGeocode(results[0].geometry.location, doLink, initial, null, false);
								endMarker.used = true;
								//endMarker.setVisible(true); 
							}
							
							if((initial && (Utils.verifyCall() == "orign" || Utils.verifyCall() == "consult") || Utils.verifyCall() == "site") || (!initial && Utils.verifyCall() == "destiny")){
								mapInstance.setCenter(results[0].geometry.location);
							}else if(initial && Utils.verifyCall() == "destiny" && !Utils.queryString("destAddress")){
								mapInstance.setCenter(results[0].geometry.location);
							}else if(!initial && (Utils.verifyCall() == "orign" || Utils.verifyCall() == "consult") && !(Utils.queryString("initialAddress") || Utils.queryString("latitude"))){
								mapInstance.setCenter(results[0].geometry.location);
							}else if(Utils.verifyCall() == 'exibit') {
								centerExibit();
							}
						}else{
							if(fromParam){
								$(searchDom).val(address).focus().keyup();
								verifyAutoComp();
							}else{
								if(initial){
									initialMarker.setPosition(results[0].geometry.location); 
									doReverseGeocode(results[0].geometry.location, doLink, initial, null, false);
									initialMarker.used = true;
									//initialMarker.setVisible(true); 
								}else{
									endMarker.setPosition(results[0].geometry.location); 
									doReverseGeocode(results[0].geometry.location, doLink, initial, null, false);
									endMarker.used = true;
									//endMarker.setVisible(true); 
								}
							}
						}
					
					}else{
						$(searchDom).val(address).focus().keyup();
						verifyAutoComp();
					}
					
				}else{
					$(searchDom).val(address).focus().keyup();
					verifyAutoComp();
				}
			});
		};
		
		function doRdvGeocode(address, doLink, initial, fromParam){
			dontCloseInfo = false;
			Utils.callRdvService(address,function(latlong){
				if(latlong.latitude && latlong.longitude){
					if(fromParam){
						mapInstance.firstTime = true;
						$(searchDom).val(address);
					}
					var location = new google.maps.LatLng(parseFloat(latlong.latitude), parseFloat(latlong.longitude));
					
					if(initial){
						initialMarker.setPosition(location);
						doReverseGeocode(location, doLink, initial, null,false);
						initialMarker.used = true;
						//initialMarker.setVisible(true);
					}else{
						endMarker.setPosition(location);
						doReverseGeocode(location, doLink, initial, null,false);
						endMarker.used = true;
						//endMarker.setVisible(true); 
					}
					
					if((initial && (Utils.verifyCall() == "orign" || Utils.verifyCall() == "consult")) || (!initial && Utils.verifyCall() == "destiny")){
						mapInstance.setCenter(location); 
					}else if(initial && Utils.verifyCall() == "destiny" && !Utils.queryString("destAddress")){
						mapInstance.setCenter(location); 
					}else if(!initial && (Utils.verifyCall() == "orign" || Utils.verifyCall() == "consult") && !Utils.queryString("initialAddress")){
						mapInstance.setCenter(location); 
					}
					
					$(searchDomAtt).html("<b style='color:red'>ATENÃ&#135;Ã&#131;O: </b> Para pesquisas em Rodovias, <u>informe a sigla do Estado</u>").show();
				}else{
					$(searchDomAtt).html("Não foi possível encontrar<b> " + address + "</b>").show();
				}
			});
		};
		
		//MantÃ©m atuaalizado a contagem de postos exibidos
		function updateLayerCount(bool, close){
			if(bool){
				var count = 0;
				var passed40 = false;
				for(var lyr = 0; lyr < mapInstance.layers.length; lyr++){
					var lr = mapInstance.layers[lyr];
					var lrct = 0;
					if($(lr.toggleElement).is(":checked")){
						if(lr.markers.length > 0){
							for(var mk = 0; mk < lr.markers.length; mk++){
								var mkr = lr.markers[mk];
								if(mapInstance.getBounds().contains(mkr.position)){
									if(mkr.getVisible()){
									count++;
									lrct++;
									}
								}
							}
						}
					}
					if(lrct >= 40) passed40 = true;
				}
				if(count > 0){
					if(close){
						if(passed40) Utils.showWarning("Apresentando os "+count+" postos mais prÃ³ximos ao centro");
						else Utils.showWarning("");
						manageSizes();
					}else{
						Utils.showWarning("Apresentando os "+count+" postos mais prÃ³ximos ao centro");
						manageSizes();
					}
				}else {
					Utils.showWarning("");
					manageSizes();
				}
			}else{
				Utils.showWarning("");
				manageSizes();
			}
		}
		
		//FunÃ§Ã£o que atualiza postos em exibiÃ§Ã£o depois de qualquer atualizaÃ§Ã£o
		function refreshLayer(layerInstance){
			
				if(Utils.queryString("redeReferenciada") != undefined || Utils.queryString("redeReferenciada2") != undefined) {
					$(".listLocaleWrapper").find(".ps-subheading").text("Aguarde..");
				}
				
			//if($(layerInstance.toggleElement).is(":checked")){
				var radius = (google.maps.geometry.spherical.computeDistanceBetween(mapInstance.getBounds().getNorthEast(),mapInstance.getBounds().getSouthWest()))/2;
				var latLng = {
					latitude: mapInstance.getCenter().lat(),
					longitude:mapInstance.getCenter().lng()
				}
				
				radius = radius/1000;
				radius = radius.toFixed(0);
				
				//mapInstance.useMaxQtt = false;
				//mapInstance.zoomming = false;
				if(radius > defaultDetails.maxRadius){
					mapInstance.useMaxQtt = true;
					updateLayerCount(true, false);
				}else{
					updateLayerCount(true, true);
				}
			
				mapInstance.radius = radius;
				mapInstance.latlngCenter = latLng;
				layerInstance.doneLoading = false;
				Utils.callCustomLayer(layerInstance, mapInstance);
			//}
		}
		
		function generateLateralFilters() {
			var invertedParams = Utils.queryString('invertParam') == 'true'?false:true;
			for(var layer = 0; layer < mapInstance.layers.length; layer++){
				var layerInstance = mapInstance.layers[layer];
				if(invertedParams || (Utils.queryString(layerInstance.toggleElement.substring(1)) == 'true' || Utils.queryString(layerInstance.toggleElement.substring(1)) == 'show')) {
					var exbtName = typeof layerInstance.exibitionName == 'function'? layerInstance.exibitionName():layerInstance.exibitionName;
					var checked = Utils.queryString(layerInstance.toggleElement.substring(1)) == 'true'? 'checked':'';
					var check = $('<input type="checkbox" id="'+layerInstance.toggleElement.substring(1)+'" '+checked+' class="checkFilter checkbox">');
					var span  = '<span class="checkboxText">'+ exbtName +'<span>';
					var img   = '<img class="imgFilter" src="'+layerInstance.img+'" height="30px" width="30px">';
					var arr = "Down";
					var showFilter = "display:none";
					if(checked) {
						arr = "Up";
						showFilter = "";
					}
					
					var label = $('<label class="label--checkbox"></label>');
					var arrow = $('<img class="arrowFilter" data-id="' + layerInstance.filterElement + '" src="giw2/images/ico/map/arrow'+arr+'.png" height="20px" width="20px" />').data('toggle',layerInstance.toggleElement).click(function() {
						if($($(this).attr('data-id')).is(":visible")) {
							$($(this).attr('data-id')).hide();
							$(this).attr("src","giw2/images/ico/map/arrowDown.png");
						} else {
							$($(this).attr('data-id')).show();
							$(this).attr("src","giw2/images/ico/map/arrowUp.png");
							
							if(!$($(this).data("toggle")).is(":checked")) {
								$($(this).data("toggle")).trigger("click");
							}
						}
						
						
					});
					var title = $('<div class="filterListTitle"></div>');
					
					$(check).data('layerInst',layerInstance);
					
					$(check).click(function(){
						if($(this).is(":checked")){
							$(this).data("layerInst").showFilter = true;
							$(this).data("layerInst").canZoom = true;
							refreshLayer($(this).data("layerInst"));
							$($(this).data("layerInst").filterElement).parent().find(".arrowFilter").attr("src","giw2/images/ico/map/arrowUp.png");
							$($(this).data("layerInst").filterElement).parent().find(".arrowFilter").data("arrowDown",false);
							$($(this).data("layerInst").filterElement).show();
						}else{
							$($(this).data("layerInst").filterElement).hide();
							$($(this).data("layerInst").filterElement).parent().find(".arrowFilter").attr("src","giw2/images/ico/map/arrowDown.png");
							$($(this).data("layerInst").filterElement).parent().find(".arrowFilter").data("arrowDown",true);
							
							showHideLayers($(this).data("layerInst"), true);
							updateListLocales();
							
							if(initialMarker.used && showWithExtra){
								var booli = Utils.verifyCall() == 'orign'? true: false;
								doReverseGeocode(initialMarker.getPosition(), booli, true, null, false);
							}
							
							if(endMarker.used && showWithExtraDest){
								var boold = Utils.verifyCall() == 'destiny' || Utils.verifyCall() == 'consult'? true: false;
								doReverseGeocode(endMarker.getPosition(), boold, false, null, false);
							}
						}
					});
					
					$(check).appendTo(label);
					$(span).appendTo(label);
					$(img).appendTo(title);
					$(label).appendTo(title);
					$(arrow).appendTo(title);
					
					var finalDiv = $('<div class="innerList"></div>');
					$(title).appendTo(finalDiv);
					
					var filterDiv = $("<div class='filterListSub' style='"+showFilter+"' id='"+layerInstance.filterElement.substring(1)+"'></div>").appendTo(finalDiv);
					if(layerInstance.facetsFixed) {
						var content = layerInstance.facetsConfiguration2();
						
						$(content).appendTo(filterDiv);
					}
					
					$(filterDiv).appendTo(finalDiv);
					$(finalDiv).appendTo($('.filterList'));
					if(layerInstance.facetsFixed) $(".fixedFacets .facetFixed").data("layerInst", layerInstance);
				}
			}
			
			if($(".filterListTitle").length == 1) {
				$(".filterListTitle").hide();
				$(".filterListSub").css('padding-left','5px');
				
				if(!layerInstance.facetsFixed && $.isEmptyObject(layerInstance.facetsConfiguration2())) {
					$(".filterWrapper").hide();
					$(".filterWrapperMin").hide();
					$(".filterWrapper").attr("data-hide","true");
					$(".filterWrapperMin").attr("data-hide","true");
				}
			}
			
			$("body").on("change",".fixedFacets .facetFixed",function() {
				$(".fixedFacets .facetFixed").not(this).removeAttr("checked");
						
				if($(".fixedFacets .facetFixed").length == 0){
					$(this).prop("checked","true");
				}
				
				if($(this).is(":checked")){
					refreshLayer($(this).data("layerInst"));
				}
			});
		}
		
		//Busca pela lateral de filtros
		function doSearchFilter(){

            //F0124186 Adicionado dataLayer
			dataLayer = dataLayer || [];
			dataLayer.push({
				'event': 'servico.busca-mapa',
				'servico': serviceName,
				'texto': $("#iptSearch").val()
			});	

			var val = $("#searchPoiIpt").val();

			$(".errorResult").html("");
			$(".errorResult").hide();
			if (val.length < 3){
				alert("Insira um critÃ©rio maior de busca");
				$("#searchPoiIpt").focus();
			}else{
				for(var lr = 0; lr < mapInstance.layers.length; lr++){
					var layer = mapInstance.layers[lr];
					var invertedParams = Utils.queryString('invertParam') == 'true'?false:true;
					if(invertedParams || (Utils.queryString(layer.toggleElement.substring(1)) == 'true' || Utils.queryString(layer.toggleElement.substring(1)) == 'show')) {
						if(layer.customServiceQuery){
							layer.doneQuery = false;
							layer.foundOne = false;
							loadingSearch();
							$(".resultsLine").html("");
							$(".resultWrapper").show();
							Utils.callCustomLayerQuery(layer, mapInstance, val, function(returnData, options) {
								options.doneQuery = true;
								loadingSearch();
								var divLine = $("<div></div>");
								var exbtName = typeof options.exibitionName  == 'function' ? options.exibitionName(): options.exibitionName;
								var layerName = $("<p style='font-weight:bold;'>"+exbtName+"</p>");
								
								$(layerName).appendTo(divLine);
								
								for(var ret = 0; ret < returnData.length; ret++){
									var element = returnData[ret];
									if(element.latitude && element.longitude){
										options.foundOne = true;
										$("<p><a href='#'>"+element.description+"</a></p>").appendTo(divLine).click(searchClick(element, options));
									}
								}
								
								if(returnData.length > 0) $(divLine).appendTo(".resultsLine");
								
								function searchClick(element, options){
									return function(){
										dontCloseInfo = false;
										var latlng = new google.maps.LatLng(parseFloat(element.latitude), parseFloat(element.longitude));
												
										mapInstance.setCenter(latlng);
										mapInstance.setZoom(14);
										mapInstance.searchClicking = true;
										$(options.toggleElement).prop("checked", "checked");
										
										infowindow.searchClick =true;
										refreshLayer(options, true);
										
										if(directionsRender) clearRoute(); //Retira a Rota
										var type = Utils.verifyCall();
										var initial = false;
										if(type == "orign") {
											initialMarker.setPosition(latlng);
											initialMarker.used = true;
											//initialMarker.setVisible(true);
											initial = true;
										} else {
											endMarker.setPosition(latlng);
											endMarker.used = true;
											//endMarker.setVisible(true);
										}
										var extra = [];
										element.layerInst = options;
										if(typeof  options.exibitionName === "string"){
											element.layerName = options.exibitionName;
										} else {
											element.layerName = options.exibitionName();
										}
										
										extra.info = element;
										extra.info.detailsPage = options.detailsPage;
										doReverseGeocode(latlng, false, initial, extra);
										
										if(!window.matchMedia("(min-width: 769px)").matches) {
											$(".sidebarWrapperInner").animate({ 
												left: "-2000",
											}, 400 );
											$(".sidebarWrapper").fadeOut();
										}
										
										infowindow.close();
										infowindow.setContent(fillInfoWindow(extra));
										if(initial) infowindow.open(mapInstance, initialMarker);
										else infowindow.open(mapInstance, endMarker);
									}
								}
								filterNoneFct();
							});
						}
					}
				}
				
			}
		}
		
		function loadingSearch(){
			var show = false;
			for(var layer = 0; layer < mapInstance.layers.length; layer++){
				var layerInstance = mapInstance.layers[layer];
				var invertedParams = Utils.queryString('invertParam') == 'true'?false:true;
				if(invertedParams || (Utils.queryString(layerInstance.toggleElement.substring(1)) == 'true' || Utils.queryString(layerInstance.toggleElement.substring(1)) == 'show')) {
					if(layerInstance.customServiceQuery){
						if(!layerInstance.doneQuery) show = true;
						break;
					}
				}
			}
			
			load = "<img  class=\"searchFilterImgInner\" src=\"giw2/images/ico/map/loading2.gif\" height=\"20px\" width=\"20px\" />";
			//nload = "<img  class=\"searchFilterImgInner\" src=\"giw2/images/ico/map/searchGlass.png\" />";
			
			//load = "giw2/images/ico/map/loading2.gif";
			nload = "//maps.gstatic.com/tactile/omnibox/quantum_search_button-20150825-1x.png";
			if(show) {
				$(".searchPoiIco").html(load);
				$(".searchPoiIco").css("background","none");
			} else {
				$(".searchPoiIco").html("");
				$(".searchPoiIco").css("background","url(" + nload + ")");
			}
		}
		
		$("body").on("click",".closeSearchPoi",function() {
			$(".resultWrapper").hide();
		});
		
		function filterNoneFct(){
			var showError = true;
			var finished = true;
			for(var lr = 0; lr < mapInstance.layers.length; lr++){
				var layer = mapInstance.layers[lr];
				var invertedParams = Utils.queryString('invertParam') == 'true'?false:true;
				if(invertedParams || (Utils.queryString(layer.toggleElement.substring(1)) == 'true' || Utils.queryString(layer.toggleElement.substring(1)) == 'show')) {
					if(layer.customServiceQuery){
						if(layer.doneQuery){
							if(layer.foundOne){
								showError = false;
							}
						}else{
							finished = false;
						}
					}
				}
			}
			
			if(finished && showError){
				$(".resultWrapper").show();
				$(".resultsLine").html("");
				$("<p>NÃ£o foi encontrado nenhum posto com esses critÃ©rios</p>").appendTo(".resultsLine");
			}
		}
		//FunÃ§Ã£o principal, retorna os dados selecionados para a tela que chamou, pode ser popup ou iframe
		function returnToCaller(place, type, extraInfo, lastKm){
			var info = extraInfo? extraInfo.info: null;
			var caller = Utils.chooseReturn();
			var latlong;
			if(place.geometry.location){
				latlong = {
					latitude: place.geometry.location.lat().toFixed(6),
					longitude: place.geometry.location.lng().toFixed(6)
				}
			}
			var type2;
			switch (type){
				case 'orign':
					type2 = "origem";
				break;
				case 'destiny':
					type2 = "destino";
				break;
				case 'consult':
					type2 = "consulta";
				break;
			}
			if(info){
				if(info.layerInst.layerType == "capsMKT"){
					info = Utils.splitMKTAddress(info);
				}
				if(info.layerInst.layerCode){ //DESCOMENTAR
					info.type = info.layerInst.layerCode;
			
				}
			}
			
			var address = Utils.placeToAddress(place,lastKm, mapInstance);
			var distance;
			if(initialMarker.distance) distance = initialMarker.distance;
			
			var returnCallback = { 	"type"     		: type2,
									"latlong"  		: latlong,
									"address"  		: address,
									"googleResult"	: place,
									"extraData" 	: info,
									"distance" 		: distance,
									"search_level"	: mapInstance.searchLevel
			};
			if(caller){
				caller.popupcallback(returnCallback);
				window.close();
			}
		}
		
		//Preenche sessÃ£o de Pontos Apresentados
		function updateListLocales(fromDist){
			$(".listLocaleWrapper").html("");
			$("#sendMailSelAllCheck").removeAttr("checked");
			for(var x = 0; x < mapInstance.layers.length; x++){
				var layer = mapInstance.layers[x];
				if(layer.markers && layer.markers.length > 0){
				  var showedOne = false;
				  var marksToShow = [];
               if(layer.toggleElement == "#redeReferenciada"){
                    $(".ps-mod-map-list .ps-subheading").html("Encontramos "+layer.markers.length+" prestadores");
               }
					for(var y = 0; y < layer.markers.length; y++){
						var mark = layer.markers[y];
						if(!fromDist) mark.distanceToPin = null;
						
						mark.distanceToPin = calculateDistance(mark);
						
						if($(layer.toggleElement).is(":checked")){
							if(y == 0){
								var exbt = "";
								if(typeof  layer.exibitionName === "string"){
									exbt = layer.exibitionName;
								} else {
									exbt = layer.exibitionName();
								}
								/*$("<p class='layerNameListLocale' id='layerListLocale"+layer.toggleElement.substring(1)+"'><b>"+exbt+"</b></p>").appendTo(".listLocaleWrapper");*/
							}
						}
						if(mapInstance.getBounds().contains(mark.position) || Utils.queryString("redeReferenciada") != undefined || Utils.queryString("encontreCorretores") != undefined){
							if(mark.getVisible() || Utils.queryString("redeReferenciada") != undefined){
								showedOne = true;
								marksToShow.push(mark);
							}
						}
					}
					
					if(fromDist || Utils.queryString('useServiceDistance') != 'true') {
						marksToShow = marksToShow.sort(function(a, b) {
							return parseFloat(a.distanceToPin) - parseFloat(b.distanceToPin);
						});
					}			
					var ul = $('<ul class="ps-map-list"></ul>');
					
					for(var y = 0; y < marksToShow.length; y++){
						var mark = marksToShow[y];
						
						var li = $('<li class="ps-map-list__item"></li>');
						$('<div class="ps-map-list-km"><span class="ps-map-pin"></span><p class="ps-caption  ps-caption-uppercased " style="cursor:pointer;">Ver</p></div>').appendTo(li).click(listLocaleSelect(mark));
						
						$("<h2 class='ps-subheading '>"+mark.info.description+"<h2>").appendTo(li);
						
						if(Utils.queryString("redeReferenciada") != undefined) {
							if(mark.info.Enderecos[0].EnderecoVO[0].Curriculos && mark.info.Enderecos[0].EnderecoVO[0].Curriculos.length > 0 && mark.info.Enderecos[0].EnderecoVO[0].Curriculos[0].CurriculoVO){
								for(var z = 0; z < mark.info.Enderecos[0].EnderecoVO[0].Curriculos[0].CurriculoVO.length; z++){
									$("<img src=\"https://wwws.portoseguro.com.br/rederef/visual/images/RN321/"+mark.info.Enderecos[0].EnderecoVO[0].Curriculos[0].CurriculoVO[z].Sigla+".png\"/>").appendTo(li);
								}
							}
							//$("<p class='ps-caption'>CNPJ: "+mark.info.CNPJCPFFormatado[0]+"</p>").appendTo(li);
						}
						
						var finalAddress = mark.info.address;
						if(mark.info && mark.info.Enderecos && mark.info.Enderecos[0] && mark.info.Enderecos[0].EnderecoVO[0] && mark.info.Enderecos[0].EnderecoVO[0].Numero) {
							if(mark.info.Enderecos[0].EnderecoVO[0].Complemento[0].toString() === '[object Object]'){
                         finalAddress += ", " + mark.info.Enderecos[0].EnderecoVO[0].Numero;
                    }else{
                         finalAddress += ", " + mark.info.Enderecos[0].EnderecoVO[0].Numero + " - " + mark.info.Enderecos[0].EnderecoVO[0].Complemento[0] ;
                            
                    }
                      
						}
						if(!mark.info.PrestadorOnline || mark.info.PrestadorOnline == "N"){
							$("<p class='ps-caption'>"+finalAddress+"</p>").appendTo(li);
							$("<p class='ps-caption'>"+mark.info.phone+"</p>").appendTo(li);
						}
						if(mark.info.RazaoSocial && mark.info.RazaoSocial.length > 0) {
							$("<p class='ps-caption'>Razão Social: "+mark.info.RazaoSocial[0]+"</p>").appendTo(li);
						}
						if(mark.info.TipoPessoa && mark.info.TipoPessoa[0] == "J") {
							$("<p class='ps-caption'>CNPJ: "+mark.info.CNPJCPFFormatado[0]+"</p>").appendTo(li);
						} else if (mark.info.InscricaoConselhoRegional && mark.info.InscricaoConselhoRegional.length > 0){
							if (Utils.queryString("rede") == '47'){
								$("<p class='ps-caption'>CRO: "+mark.info.InscricaoConselhoRegional[0]+"</p>").appendTo(li);
							} else {
								$("<p class='ps-caption'>CRM: "+mark.info.InscricaoConselhoRegional[0]+"</p>").appendTo(li);
							}
						}

						if(mark.info.PrestadorOnline && mark.info.PrestadorOnline == "S"){	
							if(mark.info.HomePage && mark.info.HomePage.length > 0){
								$("<p class='ps-caption'>Site: "+mark.info.HomePage+"</p>").appendTo(li);
							}
							$("<p class='ps-caption'>Atendimento exclusivo à distância (OnLine)</p>").appendTo(li);
						}

						$("<a href='#' class='infoWindowLink'>Ver Detalhes</a>").data('markerInfo', mark).appendTo(li);
						
						/*var innerDiv = $('<div class="listDetailLine"><label class="label--checkboxInner"></label></div>');
						$("<input type='checkbox' class='sendMailIpt checkboxInner' />").data("element",mark).appendTo(innerDiv);
						var span = $('<span class="checkboxTextInner"></span>');
						$("<h2 class='ps-subheading '><a href='javascript:;'>"+mark.info.description+"</a><h2>").appendTo(span);
						$(span).appendTo(innerDiv);
						if (mark.distanceToPin) {
							$("<span class='distanceSpan'>"+mark.distanceToPin.toFixed(2).replace(".",",")+"Km</span>").appendTo(innerDiv).click(listLocaleSelect(mark));
						} else {
							$("<span class='distanceSpan'></span>").appendTo(innerDiv).click(listLocaleSelect(mark));
						}	
						$(innerDiv).appendTo(li);*/
						$(li).appendTo(ul);
					}
					$(ul).appendTo($(".listLocaleWrapper"));
               
               //Nenhum registro encontrado
               if(marksToShow.length==0 && marksToShow!=undefined){
                  $(".listLocaleWrapper").html('<ul class="ps-map-list"><li class="ps-map-list__item"><h2 class="ps-subheading">Nenhum registro encontrado<h2></li></ul>');
               }
	
					if(!showedOne) {
						$("#layerListLocale"+layer.toggleElement.substring(1)).remove();
					}
				}
			
			}
			
			function listLocaleSelect(marker){
				return function(){
					dontCloseInfo = true;
					clearRoute();
					var type = Utils.verifyCall();
					var initial = false;
					if(type == "orign"){
						initialMarker.setPosition(marker.position);
						initialMarker.used = true;
						//initialMarker.setVisible(true);
						initial = true;
					}else{
						endMarker.setPosition(marker.position);
						endMarker.used = true;
						//endMarker.setVisible(true);
					}
					
					if(type == 'site'){
						mapInstance.setCenter(marker.position);
					}
					
					if(!window.matchMedia("(min-width: 769px)").matches) {
						$(".sidebarWrapperInner").animate({ 
							left: "-2000",
						}, 400 );
						$(".sidebarWrapper").fadeOut();
					}
					
					infowindow.close();
					infowindow.setContent(fillInfoWindow(marker));
					infowindow.open(mapInstance, marker);
					
					
					doReverseGeocode(marker.position, false, initial, marker, false);
				}
			}
			
			//Selecionar Todos para Email
			$("body").on("change","#sendMailSelAllCheck", function() {
				if($(this).is(":checked")) {
					$(".sendMailIpt").prop("checked","checked");
				} else {
					$(".sendMailIpt").removeAttr("checked");
				}
			});
			
			$("body").on("change",".sendMailIpt", function() {
				if(!$(this).is(":checked")) {
					$("#sendMailSelAllCheck").removeAttr("checked","checked");
				}
			});
			
			$(".sendMailLink").unbind().click(function() {
				sendMail();
			});
			
			function sendMail(){
				var ipts = $(".sendMailIpt:checked");
				
				if(ipts.length > 0){
					var txt = "";
					switch (Utils.verifyCompany()) {
						case "porto":
							txt = "<b>Relaçãoo de endereços da Porto Seguro</b><br/>"
						break;
						case "azul":
							txt = "<b>Relaçãoo de endereços da Azul Seguros</b><br/>"
						break;
						case "itau":
							txt = "<b>Relaçãoo de endereços da Itaú Seguros</b><br/>"
						break;
						default:
							txt = "<b>Relaçãoo de endereços da Porto Seguro</b><br/>"
						break;
					}
					
					var firstTime = true;
					var lastName = "";
					var content = $("<div></div>");
					
					$(".sendMailIpt:checked").each(function(){
						var info = $(this).data("element").info;
						
						if(lastName && lastName != info.layerName){
							txt += "<br/><br/><p><b>"+info.layerName+"</b></p>";
							lastName = info.layerName;
						}
						
						if(firstTime){
							txt += "<br/><p><b>"+info.layerName+"</b></p>";
							firstTime = false;
							lastName = info.layerName;
						}
						
						var namespace = '';
						if(!Utils.testIE()){
							namespace = 'p760\:';
						}
						
						if(info[namespace + 'endereco'] == undefined && Utils.testIE()) namespace = 'p760\:';
						
						txt += "<br/><p><b class='label'>Nome: </b>"+info.description+"</p>";
						if(info.nomeLogradouro){
							txt += "<p><b class='label'>EndereÃ§o: </b>";
							if(info.nomeTipoLogradouro){
								txt += $.trim(Utils.clearUndefined(info.nomeTipoLogradouro))+ " ";
							}
							txt += Utils.clearUndefined(info.nomeLogradouro);
							
							if(info.numeroLogradouro){
								txt += $.trim(Utils.clearUndefined(info.numeroLogradouro))+ " ";
							}
							
							txt += "</p>";
							
							txt += "<p><b class='label'>Bairro: </b>"+Utils.clearUndefined(info.nomeBairro)+" - "+Utils.clearUndefined($.trim(info.nomeCidade));
							if(Utils.clearUndefined(info.codigoUnidadeFederacao)) txt += "/" +Utils.clearUndefined(info.codigoUnidadeFederacao);
							txt += "</p>";
						}else if(info.address){
							txt += "<p><b class='label'>EndereÃ§o: </b>"+Utils.clearUndefined(info.address)+"</p>";
							//txt += "<p><b class='label'>Bairro: </b>"+Utils.clearUndefined(info[namespace + 'bairro'])+" - "+$.trim(info[namespace + 'cidade']);
							//if(Utils.clearUndefined(info[namespace + 'estado'])) txt += "/" +Utils.clearUndefined(info[namespace + 'estado']);
							//txt += "</p>";
						}
						if(info.numeroInicioCep){
							txt += "<p><b class='label'>Cep: </b>"+Utils.completeCEP($.trim(info.numeroInicioCep));
							if(info.numeroComplementoCep) txt += "-";
							txt += Utils.clearUndefined(Utils.completeCEP2($.trim(info.numeroComplementoCep))) + "</p>";
						}
						txt += "<p><b class='label'>Telefone: </b>";
						
						if(info[namespace + 'telefone']) {
							txt +=  Utils.clearUndefined(info[namespace + 'telefone']) +"</p>";
						} else if(info.phone) {
							txt +=  Utils.clearUndefined(info.phone) +"</p>";
						} else {
							if(info.codigoDdd){
								txt += "(" + $.trim(info.codigoDdd) + ") - ";
								if(info.primeiroNumeroTelefone){
									txt += Utils.clearUndefined(info.primeiroNumeroTelefone)+"</p>";
								}else if(info.numeroTelefone){
									txt += Utils.clearUndefined(info.numeroTelefone)+"</p>";
								}
							}else if(info.textoNumeroTelefoneRamal){
								txt += Utils.clearUndefined($.trim(info.textoNumeroTelefoneRamal)) + "</p>";
							}
							
						}
						if(info.dataInicioBloqueio && info.dataFinalBloqueio){
							if(Utils.parseDate(info.dataInicioBloqueio) < new Date() && new Date() < Utils.parseDate(info.dataFinalBloqueio)){
								txt += "<p><b class='label'>SituaÃ§Ã£o: </b>***() OFICINA LOTADA NESTE MOMENTO ***</p>";
							}else{
								txt += "<p><b class='label'>SituaÃ§Ã£o: </b>Ativa</p>";
							}
						}else{
							txt += "<p><b class='label'>SituaÃ§Ã£o: </b>Ativa</p>";
						}
					});
						
						//txt += "<br/><br/><p><b>Porto Seguro - 2014</b></p>";
						switch (Utils.verifyCompany()) {
							case "porto":
								txt += "<br/><br/><p><b>Porto Seguro - "+ new Date().getFullYear()+"</b></p>"
							break;
							case "azul":
								txt += "<br/><br/><p><b>Azul Seguros - "+ new Date().getFullYear()+"</b></p>"
							break;
							case "itau":
								txt += "<br/><br/><p><b>Itaú Seguros - "+ new Date().getFullYear()+"</b></p>"
							break;
							default:
								txt += "<br/><br/><p><b>Porto Seguro - "+ new Date().getFullYear()+"</b></p>"
							break;
						}
						
						$(txt).appendTo(content);
						
						var url = "mapasSite_Mail.content?";
						if(window.matchMedia("(min-width: 769px)").matches) url += "&fromDesk=true"
						if(Utils.queryString("emailSendTo")) url += "&sendTo=" + escape(Utils.queryString("emailSendTo"));
						if(Utils.queryString("emailSendFrom")) url += "&sendFrom=" + escape(Utils.queryString("emailSendFrom"));
						if(Utils.queryString("emailSubject")) url += "&subject=" + escape(Utils.queryString("emailSubject"));
						if(Utils.queryString("lockSubject") == 'true') url += "&lockSubject=true";
						else url += "&lockSubject=false";
						if(Utils.verifyCompany() != '') url += "&company=" + Utils.verifyCompany();
						else url += "&company=porto";
						
						var frame 	= $("<div style='padding-right:5px' ><form action='"+url+"' id='formMail' method='POST' target='frameEmail'>"+
									  "<input type='hidden' id='iptMail' name='message' /></form><iframe name='frameEmail' src='about:blank' frameBorder=\"0\"   width=\"100%\" height=\"98%\"></iframe></div>");
						
						
						if(window.matchMedia("(min-width: 769px)").matches) {
							$(frame).dialog({
								width:600,
								height:327,
								modal: true,
								resizable: false,
								close: function(){
									$(frame.remove());
								}
							});
						} else {
							var hgt = parseInt($(window).outerHeight()) + 58;
							$(frame).dialog({
								width:'85%',
								height: hgt,
								position: { my: "left top", at: "left top", of: window },
								modal: true,
								//show: {effect: "slide", direction : 'right', duration: 400 },
								//showOpt: {direction: 'right'},
								resizable: false,
								close: function(){
									$(frame.remove());
								}
							});
						}
			
						window.closeMapDialog = closeMapDialog;
						
						$("#iptMail").val(content.html());
						$("#formMail").submit();
			
				}else{
					alert("Selecione ao Menos um Posto");
				}
			}
			
			function closeMapDialog(){
				$(".ui-dialog-content").dialog("close");
			}
		
		}
		
		
		
		$("body").on("keyup","#filterListLocale",function() {
			var val = $(this).val();
			//if(val) {
				$(".listDetailLi a").each(function(){
					if($(this).text().indexOf(val.toUpperCase()) == -1){
						$(this).closest(".listDetailLi").hide();
					}else{
						$(this).closest(".listDetailLi").show();
					}
				});
			//}
		});
		
		//FunÃ§Ã£o responsÃ¡vel por gerar os filtros laterais
		var lastShowed = false;
		function updateFilterList(layer, bool){
			if(layer.facetsFixed) {
				var ct = 0;
				$(".fixedFacets .facetFixed").next().find(".filterFixedValue").html("("+0+")");
				if(layer.markers) {
					for(var x = 0; x < layer.markers.length;x++) {
						if(mapInstance.getBounds().contains(layer.markers[x].position)) ct++;
					}
				}
				$(".fixedFacets .facetFixed:checked").next().find(".filterFixedValue").html("("+ct+")");
			} else {
				var filters = layer.facetsConfiguration2();
				var facetsCounter = {};
				
				var oldFacets = {};
				
				if(layer.facetsCounters2) oldFacets = layer.facetsCounters2; 
				else layer.facetsCounters2 = {};
				
				if(filters){
					for (var facetGroup in filters){
						 var ct = 0;
						for(var filter in filters[facetGroup]){
							var gp = filters[facetGroup][filter];
							var flagToCheck = gp.name;
							var root = gp.root? gp.root:"";
							for(var opt in gp.options){
								ct++;
								
								var val;
								var val2;
								var flagToCheck2;
								var takeUndefined;
								var checked;
								var operator;
								
								val = gp.options[opt].val;
								operator = gp.options[opt].operator;
								
								if (gp.options[opt].checked) checked = true;
								else checked = false;
								if(gp.options[opt].field2)  flagToCheck2 =  gp.options[opt].field2;
								if(gp.options[opt].val2)  val2 =  gp.options[opt].val2;
								if(gp.options[opt].undefined)  takeUndefined =  gp.options[opt].undefined;
								else takeUndefined = false;
								
								if (!facetsCounter[facetGroup]) {
									facetsCounter[facetGroup]={};
								}
								
								if(operator == "dbetween" || operator == "dnbetween"){
									if (!facetsCounter[facetGroup][flagToCheck+Utils.parseJsDate(val)+ct]) {
										facetsCounter[facetGroup][flagToCheck+Utils.parseJsDate(val)+ct] = { 
											checkbox: null, 
											graphics: new Array(), 
											name: gp.options[opt].name,
											field: flagToCheck, 
											checked: checked
										}; 
									}
								} else if(operator == "array_equals_index" || operator == "notarray_equals_index"){
									if (!facetsCounter[facetGroup][flagToCheck+val+ct]) {
										facetsCounter[facetGroup][flagToCheck+val+ct] = { 
											checkbox: null, 
											graphics: new Array(), 
											name: gp.options[opt].name,
											field: flagToCheck, 
											checked: checked
										}; 
									}
								}else if(operator == "array_notequals" || operator == "array_equals"){
									if (!facetsCounter[facetGroup][flagToCheck+val+ct]) {
										facetsCounter[facetGroup][flagToCheck+val+ct] = { 
											checkbox: null, 
											graphics: new Array(), 
											name: gp.options[opt].name,
											field: flagToCheck, 
											checked: checked
										}; 
									}
								}else if(gp.options[opt].operator != "original"){
									if (!facetsCounter[facetGroup][flagToCheck+val]) {
										facetsCounter[facetGroup][flagToCheck+val] = { 
											checkbox: null, 
											graphics: new Array(), 
											name: gp.options[opt].name,
											field: flagToCheck, 
											checked: checked}; 
									}
								}
								
								if(layer.markers){
									for(var x = 0; x < layer.markers.length;x++){
										var graphic = layer.markers[x];
										
										if(mapInstance.getBounds().contains(graphic.position)){
											var info = graphic.info;
											if(root) info = info[root];
											if(info){
												if(info[flagToCheck]){
													var firstInfo;
													if(info[flagToCheck] instanceof Array) firstInfo = info[flagToCheck][0];
													else firstInfo = info[flagToCheck];
													
													if(operator == "equals")  if(firstInfo == val)               facetsCounter[facetGroup][flagToCheck+val].graphics.push(graphic); 	
													if(operator == "Nequals") if(firstInfo != val)               facetsCounter[facetGroup][flagToCheck+val].graphics.push(graphic); 	
													if(operator == "partial") if(firstInfo.indexOf(val) != -1)   facetsCounter[facetGroup][flagToCheck+val].graphics.push(graphic); 	
													if(operator == "greater") if(firstInfo > val)                facetsCounter[facetGroup][flagToCheck+val].graphics.push(graphic); 	
													
													//if(operator == "array_equals") if(info[flagToCheck].indexOf(val) != -1) facetsCounter[facetGroup][flagToCheck+val].graphics.push(graphic);
													
													if(operator == "array_equals"){
														var found = false;
														for (var arrX = 0; arrX < info[flagToCheck].length; arrX++) {
															if(info[flagToCheck][arrX] == val) {
																found = true;
																break;
															}
														}
														if(found) facetsCounter[facetGroup][flagToCheck+val+ct].graphics.push(graphic);
													}
													
													if(operator == "array_notequals"){
														var found = false;
														for (var arrX = 0; arrX < info[flagToCheck].length; arrX++) {
															if(info[flagToCheck][arrX] == val) {
																found = true;
																break;
															}
														}
														if(!found) facetsCounter[facetGroup][flagToCheck+val+ct].graphics.push(graphic);
													}
													
													if(operator == "array_equals_index" || operator == "notarray_equals_index") {
														var found = false;
														for(var arrX = 0; arrX < info[flagToCheck].length; arrX++) {
															if(info[flagToCheck][arrX].indexOf(val) != -1) found = true;
														}
														if(operator == "array_equals_index" && found) facetsCounter[facetGroup][flagToCheck+val+ct].graphics.push(graphic); 
														if(operator == "notarray_equals_index" && !found) facetsCounter[facetGroup][flagToCheck+val+ct].graphics.push(graphic); 
													}
													
													if(operator == "original") {
														
														var origVal = firstInfo;
														if (!facetsCounter[facetGroup][origVal]){
															facetsCounter[facetGroup][origVal] = { 
																checkbox: null, 
																graphics: new Array(), 
																name: origVal, 
																field: flagToCheck, 
																checked: checked
															}; 
														}
														facetsCounter[facetGroup][origVal].graphics.push(graphic); 	
													}
														
													if(operator == "equals2"){
														if(info[flagToCheck2]){
														   if(firstInfo == val && info[flagToCheck2][0] == val2) facetsCounter[facetGroup][flagToCheck+val].graphics.push(graphic);
														}
													}
													
													if(operator == "equals2Or"){
														if(firstInfo == val || info[flagToCheck][0] == val2) facetsCounter[facetGroup][flagToCheck+val].graphics.push(graphic);
													}
														
													if(operator == "dbetween"){
														if(info[flagToCheck2]){
														  if(Utils.parseDate(firstInfo) < val && val < Utils.parseDate(info[flagToCheck2][0])) facetsCounter[facetGroup][flagToCheck+Utils.parseJsDate(val)+ct].graphics.push(graphic); 	
														}else{
														  facetsCounter[facetGroup][flagToCheck+Utils.parseJsDate(val)+ct].graphics.push(graphic); 	
														}
													}
														
													if(operator == "dnbetween") {
														
														if(info[flagToCheck2]){
														   
															if(Utils.parseDate(info[flagToCheck][0]) > val  || val > Utils.parseDate(info[flagToCheck2][0])) facetsCounter[facetGroup][flagToCheck+Utils.parseJsDate(val)+ct].graphics.push(graphic); 	
															
														}
													}
												}else if(operator == "dnbetween"){
													
													if(!info[flagToCheck2]) { 
														facetsCounter[facetGroup][flagToCheck+Utils.parseJsDate(val)+ct].graphics.push(graphic); 
													}else if(!info[flagToCheck2][0]){
														facetsCounter[facetGroup][flagToCheck+Utils.parseJsDate(val)+ct].graphics.push(graphic); 
													}else{
														if(val > Utils.parseDate(info[flagToCheck2][0])) facetsCounter[facetGroup][flagToCheck+Utils.parseJsDate(val)+ct].graphics.push(graphic); 
													}
												}else if(operator == "notarray_equals_index"){
													facetsCounter[facetGroup][flagToCheck+val+ct].graphics.push(graphic); 
												}else if(takeUndefined){
													facetsCounter[facetGroup][flagToCheck+val].graphics.push(graphic); 	
												}
											}
										}
									}
								}
							}
						}
					}
				}
				
				if(layer.filterElement){
					$(layer.filterElement).html("");
					if(layer.showFilter){
						$(layer.filterElement).show();
					}
					for(var facetGroup in facetsCounter){
						var fgroup = $("<h4>" + facetGroup + "</h4>");
						var divGroup = $("<div></div>").appendTo(layer.filterElement);
						var n = 0;
						var tooMany = false;
						
						var ul = $("<ul class='innerFilterList'></ul>");
						
						for(var facet in facetsCounter[facetGroup]){
							n++;
							if (tooMany) {
								$(ul).addClass("hasTooMany");
								ul.appendTo(layer.filterElement);
								
								var ul = $("<ul class='innerFilterList'></ul>");
								
								if(lastShowed){
									var a = $("<a class='showmore' href='#'>Mostrar menos</a>").appendTo(layer.filterElement);
									ul.show();
								}else{
									var a = $("<a class='showmore' href='#'>Mostrar mais</a>").appendTo(layer.filterElement);
									ul.hide();
								}
								
								if(lastShowed) ul.show();
								
								(function(itemToShow) {
									a.click(function() {
										
										itemToShow.toggle();
										
										if (($(this).text()) == "Mostrar mais"){
											lastShowed = true;
											$(this).text("Mostrar menos");
										}else{
											lastShowed = false;
											$(this).text("Mostrar mais");
										}	
									});
								})(ul);
							}
							
							var li = $("<li class='lineFilter'></li>");
							var name = facetsCounter[facetGroup][facet].name;
							var x = false;	
							
							if(facetsCounter[facetGroup][facet].checked){
								checkbox = $("<input type='checkbox' checked class='checkboxInner facet' />").data("layerInst",layer);
							}else{
								checkbox = $("<input type='checkbox' class='checkboxInner facet' />").data("layerInst",layer);
							}
							
							if(oldFacets){
								if(oldFacets[facetGroup]){
									if(oldFacets[facetGroup][facet]){
										if(oldFacets[facetGroup][facet]){
									 
											if(oldFacets[facetGroup][facet].checkbox){
												
												if(oldFacets[facetGroup][facet].checkbox.is(":checked")){
													checkbox = $("<input type='checkbox' checked class='checkboxInner facet' />").data("layerInst",layer);
														 
													 x = false;
												 }else{  
													checkbox = $("<input type='checkbox' class='checkboxInner facet' />").data("layerInst",layer);
													x = true; 
												}
											}else{  x = true; }
										}else{ x = true;}
									}else{ x = true;}
								}else{ x = true;}
							}else{ 
								x = true;
							}
							
							facetsCounter[facetGroup][facet].checkbox = checkbox;
							var countvis=0;
						
							
							for(var x = 0; x < layer.markers.length;x++){
								var graphic = layer.markers[x];
								
								for(y=0;y< facetsCounter[facetGroup][facet].graphics.length; y++) {
									if (graphic == facetsCounter[facetGroup][facet].graphics[y]){
										if(graphic.visible) countvis++;
									}
								}
							}
							
							facetsCounter[facetGroup][facet].size = countvis;
							
							if(Utils.queryString("showAllFilters") == "false"){
								if(countvis != 0) {
									$(li).appendTo(ul);
									$('<label class="label--checkboxInner"></label>').appendTo(li);
									$(checkbox).appendTo(li);
									$(fgroup).appendTo(divGroup);
									// $("<label>" + name + " (" +  countvis + ")</label>").appendTo(li);
									$("<label>" + name + "</label>").appendTo(li);
								}else{
									n--;
								}
							}else{
								$(li).appendTo(ul);
								$(checkbox).appendTo(li);
								$(fgroup).appendTo(divGroup);
								// $("<label>" + name + " (" +  countvis + ")</label>").appendTo(li);
								$("<label>" + name + "</label>").appendTo(li);
							}
							tooMany = (n == 20);

							
						}
						
						ul.appendTo(layer.filterElement);
					}
				}
				
				layer.facetsCounters2 = facetsCounter;
				$(":checkbox.facet").change(function(){
					var layerInst = $(this).data("layerInst");
					
					//Percorre cada graphic do layer 
					refreshFilterMarkers(layerInst);
				});
			}
		}
		
		//Trata clique nos subfiltros
		function refreshFilterMarkers(layerInst){
			if(!infowindow.searchClick) infowindow.close();
			
			for(var x = 0; x < layerInst.markers.length;x++){
				
				if(layerInst.facetsFixed){
				
				}else{
					var graphic = layerInst.markers[x];
					var show = true;
					for (var facetGroupName in layerInst.facetsCounters2) {
						var foundInGroup = true; 
						for (var facetName in layerInst.facetsCounters2[facetGroupName]) {
						 var opt = layerInst.facetsCounters2[facetGroupName][facetName];
							var facetGraphics = opt.graphics;
							if (opt.checkbox.is(":checked")) {
								foundInGroup = false;
								for (var j = 0; j < facetGraphics.length; j++) {
									if (graphic === facetGraphics[j]) {
										foundInGroup = true;
										break;
									}
								}
								if (foundInGroup) break; 
							}
						}
					   
					   if (!foundInGroup) {
							show = false;
							break; 
						};
					}
					
					if(show){
						graphic.setVisible(true);
					}else{
						graphic.setVisible(false);
					}
				}
			}
			updateListLocales();
			updateFilterList(layerInst, false);
			if(mapInstance.radius > defaultDetails.maxRadius){
				updateLayerCount(true, false);
			}else{
				updateLayerCount(true, true);
			}
		}
		
		//FunÃ§Ãµes responsÃ¡veis pro fazer cÃ¡lculo de distÃ¢ncia quando em linha reta (lista de locais)
		function calculateDistance(mark) {
			var useToCalc;
			switch (Utils.verifyCall()) {
				case "orign":
					useToCalc = endMarker;
				break;
				case "destiny":
				case "consult":
				case "site":
					useToCalc = initialMarker;
				break;
				default:
					useToCalc = initialMarker;
				break;
			}
			
			var dist = "";
			
			if(useToCalc.used) {
				if(useToCalc && useToCalc.position) {
					dist = distanceCalculation(useToCalc.position, mark.position);
				}
				
				return dist;
			} else {
				return null;
			}
		}
			
		function distanceCalculation(p1, p2) {
			var R = 6378137; // Earth?s mean radius in meter
			var dLat = rad(p2.lat() - p1.lat());
			var dLong = rad(p2.lng() - p1.lng());
			var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
			Math.cos(rad(p1.lat())) * Math.cos(rad(p2.lat())) *
			Math.sin(dLong / 2) * Math.sin(dLong / 2);
			var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
			var d = R * c;
			return d/1000; // returns the distance in Km
		};
			
		function rad(x) {
		  return x * Math.PI / 180;
		};
		
		function mountCEP(cep){
			var txt;
			if(cep.length == 7){
				if(cep.substring(4) == "000"){
					txt = "0" + cep.substring(0,4);
				}else{
					txt = "0" + cep.substring(0,4) + "-" + cep.substring(4);
				}
			}else{
				if(cep.substring(5) == "000"){
					txt = cep.substring(0,5);
				}else{
					txt = cep.substring(0,5) + "-" + cep.substring(5);
				}
				
			}
			return txt;
		}
		
	}
	
	function manageSizes() {
		//Seta lista de lugares de acordo com os outros tamanhos no momento;
		$(".localesWrapper").height($(".sidebarWrapperInner").outerHeight() - $(".addressWrapper").outerHeight() - $(".buttonsWrapper").outerHeight() - $(".filterWrapperMin").not('[data-hide]').outerHeight())
		$(".localeContentWp").height($(".localesWrapper").outerHeight() - 38 - 44 - 69);  //Os 38 sÃ£o do tÃ­tulo da divisÃ£o
		
		//Tratar tamanho mÃ¡ximo de subfiltros
		$(".filterContentWp").css('max-height',$(".sidebarWrapperInner").outerHeight() - $(".addressWrapper").outerHeight() - $(".searchPois").outerHeight() -$(".buttonsWrapper").outerHeight() - $(".localesWrapperMin").outerHeight() - $(".filterTitleWp").outerHeight() - 30)
	
		//Centraliza Warning
		
		$("#warningWrapper").css("left","initial");
		$("#warningWrapper").css("right","initial");
		$("#warningWrapper").css("margin-left","0px");
		
		var mg = $("#warningWrapper").outerWidth()/2 * -1;
		if($("#warningWrapper").outerWidth() >= ($(window).width() - 10 - 46)) {
			$("#warningWrapper").css("left","5px");
			$("#warningWrapper").css("right","5px");
			$("#warningWrapper").css("margin-left","0px");
		} else {
			$("#warningWrapper").css("right","initial");
			$("#warningWrapper").css("left","50%");
			$("#warningWrapper").css("margin-left",mg);
		}
		
		//Esconder tooltip
		if(!window.matchMedia("(min-width: 769px)").matches) $(".ui-tooltip").css("width","0px").css("height","0px").hide();
	}
	function abrirModalFrame(value){
		$.get(value,function(data){
			$("#incluirConteudo").html($(data).find(".giw-auxContainer"));
			if(typeof psLib.ModalShowHide != "undefined"){
				psLib.ModalShowHide("#modalContent");
				psLib.Init();
			}else if(typeof parent.psLib.ModalShowHide != "undefined"){
				parent.psLib.ModalShowHide("#modalContent");
				parent.psLib.Init();
			}
		});
		
		
    }
	
	$(function() {
		
		manageSizes();
		
		if(window.matchMedia("(min-width: 769px)").matches) {
			$(".buttonMenu").tooltip({
			  position: {
				my: "center bottom-20",
				at: "left top",
				create: function( event, ui )	 {
					var x = 1;
				},
				using: function( position, feedback ) {
				  $( this ).css( position );
				}
			  }
			});
			
			$(".searchGlassIco").tooltip({
			  position: {
				my: "left center",
				at: "right+10 center",
				create: function( event, ui )	 {
					var x = 1;
				},
				using: function( position, feedback ) {
				  $( this ).css( position );
				}
			  }
			});
			
			$(".searchPoiIco").tooltip({
			  position: {
				my: "left center",
				at: "right+10 center",
				create: function( event, ui )	 {
					var x = 1;
				},
				using: function( position, feedback ) {
				  $( this ).css( position );
				}
			  }
			});
		
			$(".sidabarCloseButton").tooltip({
			  position: {
				my: "left center",
				at: "right+10 center",
				create: function( event, ui )	 {
					var x = 1;
				},
				using: function( position, feedback ) {
				  $( this ).css( position );
				}
			  }
			});;
		}
		
		//Pega resize da janela do navegador
		window.onresize=function(){manageSizes()};
		
		//Controle da Barra de Busca
		$("body").on("keyup","#iptSearch",function() {
			if($("#iptSearch").val() != "") $(".cleanSearch").css("display","block");
			else $(".cleanSearch").css("display","none");
		});
		
		$("body").on("click",".cleanSearch",function() {
			$("#iptSearch").val("").focus();
			$(".cleanSearch").css("display","none");
		});
		
		//Controle Sidebar
		$("body").on("click",".buttonMenuIco",function() {
			$(".sidebarWrapperInner").animate({ 
				left: "0",
			}, 400 );
			$(".sidebarWrapper").fadeIn();
			manageSizes();
		});
		
		$("body").on("click",".sidebarWrapper",function(e) {
			if (e.target === this && Utils.queryString("fixedSidebar") != 'true') {
				$(".sidebarWrapperInner").animate({ 
					left: "-2000",
				}, 400 );
				$(".sidebarWrapper").fadeOut();
			}
		});
		
		$("body").on("click",".sidabarCloseButton",function(e) {
				$(".sidebarWrapperInner").animate({ 
					left: "-2000",
				}, 400 );
				$(".sidebarWrapper").fadeOut();
			
		});
		
		$("body").on("click",".sidebarFull",function(e) {
			$(".sidebarFull").parent().hide();
			$(".sidebarMin").parent().not('[data-hide]').show();
			manageSizes();
		});
		
		$("body").on("click",".sidebarMin",function(e) {
			$(".sidebarMin").parent().not('[data-hide]').show();
			$(this).parent().hide();
			$(".sidebarFull").parent().hide();
			$($(this).attr("data-anchor")).show();
			manageSizes();
		});	
		
		//Controle se sidebar for fixada na tela
		if(Utils.queryString("fixedSidebar") == 'true') {
			$(".sidebarWrapper").show().css("background","none").css("width","25%");
			$(".sidebarWrapperInner").css("left","0").css("width","100%");
			$(".searchWrapper").css("margin-left","25%");
			$(".buttonMenu").hide();
			$(".iptSearchWp").css("margin-left","10px");
			$("#map_canvas").css("margin-left","25%").css("width","75%");
		}
		
		//Controle de sidebar para tipo busca
		if(Utils.verifyCall() == 'search') {
			$(".buttonMenu").hide();
			$(".iptSearchWp").css("margin-left","10px");
		}
	});

	//CustomData
    customData = {
        flow: {
            name: '',
            step: ''
        },
        site: {
            screen: 'mapasSite_Index.content',
            name: 'mapa-giw',
            section: Utils.queryString("oficinasRef") ==  "true" ? "busca-oficinas" : Utils.queryString("oficinasCAR") ==  "true" ? "busca-car" : Utils.queryString("encontreCorretores") ==  "true" ? "encontre-corretor" : Utils.queryString("redeReferenciada") == "true" ? "saude-rede-referenciada" : Utils.queryString("codigoTipoEstabelecimento") == 86 ? "busca-escritorio" : Utils.queryString("codigoProduto") != undefined ? "busca-caps" : "nao-especificado",
			product: 'Caps',
            brand: 'portoseguro',
            portal: 'institucional',
            version: 'v1'
        },
        user: {
            user_id: '',
            susep: '',
            siebel_id: '',
            profile: '',
            products: ''
        }
    }

	
