/* Baseado no Infobox, disponivel na pagina do google maps
 * Author: Rafael Pini
 * Copyright: Agencia Sawi
 */
var map;var initialLocation;var browserSupportFlag=new Boolean();var markersArray=[];var distancias=[];var marcadorProx;var mapaTimer;var cidadeUserLat;var cidadeUserLon;var userLatLon;var animaCidades;function InfoBox(opts){google.maps.OverlayView.call(this);this.latlng_=opts.latlng;this.map_=opts.map;this.conteudo_=opts.conteudo;this.cidade_=opts.cidade;this.offsetVertical_=-241;this.offsetHorizontal_=0;this.height_=241;this.width_=512;var me=this;this.boundsChangedListener_=google.maps.event.addListener(this.map_,"bounds_changed",function(){return me.panMap.apply(me);});this.setMap(this.map_);}
InfoBox.prototype=new google.maps.OverlayView();InfoBox.prototype.remove=function(){if(this.div_){this.div_.parentNode.removeChild(this.div_);this.div_=null;}};InfoBox.prototype.draw=function(){this.createElement();if(!this.div_){return;}
var pixPosition=this.getProjection().fromLatLngToDivPixel(this.latlng_);if(!pixPosition){return;}
this.div_.style.width=this.width_+"px";this.div_.style.left=(pixPosition.x+this.offsetHorizontal_)+"px";this.div_.style.height=this.height_+"px";this.div_.style.top=(pixPosition.y+this.offsetVertical_)+"px";this.div_.style.display='block';};InfoBox.prototype.createElement=function(){var panes=this.getPanes();var div=this.div_;if(!div){div=this.div_=document.createElement("div");div.id="popup_custom";div.className="gmnoprint";var cidadeDiv=document.createElement("div");cidadeDiv.id="popup_titulo";cidadeDiv.innerHTML="<h4>"+this.cidade_+"</h4>";div.appendChild(cidadeDiv);var contentDiv=document.createElement("div");contentDiv.id="popup_custom_conteudo";contentDiv.innerHTML=this.conteudo_;var topDiv=document.createElement("div");topDiv.id="popup_custom_fechar";var closeImg=document.createElement("div");closeImg.id="popup_custom_fechar_botao";topDiv.appendChild(closeImg);function removeInfoBox(ib){return function(){ib.setMap(null);clearTimeout(randomMarkerCtr);};}
function stealClick_(e){if(navigator.userAgent.toLowerCase().indexOf('msie')!=-1&&document.all){window.event.cancelBubble=true;window.event.returnValue=false;}else{e.stopPropagation();}}
google.maps.event.addDomListener(topDiv,'click',removeInfoBox(this));google.maps.event.addDomListener(contentDiv,'mousedown',stealClick_);div.appendChild(topDiv);div.appendChild(contentDiv);div.style.display='none';panes.floatPane.appendChild(div);this.panMap();}else if(div.parentNode!=panes.floatPane){if(div.parentNode){div.parentNode.removeChild(div);panes.floatPane.appendChild(div);}}else{}}
InfoBox.prototype.panMap=function(){var map=this.map_;var bounds=map.getBounds();if(!bounds)return;var position=this.latlng_;var iwWidth=this.width_;var iwHeight=this.height_;var iwOffsetX=this.offsetHorizontal_;var iwOffsetY=this.offsetVertical_;var padX=150;var padY=60;var mapDiv=map.getDiv();var mapWidth=mapDiv.offsetWidth;var mapHeight=mapDiv.offsetHeight;var boundsSpan=bounds.toSpan();var longSpan=boundsSpan.lng();var latSpan=boundsSpan.lat();var degPixelX=longSpan/mapWidth;var degPixelY=latSpan/mapHeight;var mapWestLng=bounds.getSouthWest().lng();var mapEastLng=bounds.getNorthEast().lng();var mapNorthLat=bounds.getNorthEast().lat();var mapSouthLat=bounds.getSouthWest().lat();var iwWestLng=position.lng()+(iwOffsetX-padX)*degPixelX;var iwEastLng=position.lng()+(iwOffsetX+iwWidth+padX)*degPixelX;var iwNorthLat=position.lat()-(iwOffsetY-padY)*degPixelY;var iwSouthLat=position.lat()-(iwOffsetY+iwHeight+padY)*degPixelY;var shiftLng=(iwWestLng<mapWestLng?mapWestLng-iwWestLng:0)+
(iwEastLng>mapEastLng?mapEastLng-iwEastLng:0);var shiftLat=(iwNorthLat>mapNorthLat?mapNorthLat-iwNorthLat:0)+
(iwSouthLat<mapSouthLat?mapSouthLat-iwSouthLat:0);var center=map.getCenter();var centerX=center.lng()-shiftLng;var centerY=center.lat()-shiftLat;map.setCenter(new google.maps.LatLng(centerY,centerX));google.maps.event.removeListener(this.boundsChangedListener_);this.boundsChangedListener_=null;};function initialize(){if(google.loader.ClientLocation!=null){var cidadeUserLat=google.loader.ClientLocation['latitude'];var cidadeUserLon=google.loader.ClientLocation['longitude'];userLatLon=new LatLon(Geo.parseDMS(cidadeUserLat),Geo.parseDMS(cidadeUserLon));coordsUser();}
else{$.get("GeoIP.php",function(data){var cidadeUserLat=data.location[0].lat;var cidadeUserLon=data.location[0].lon;userLatLon=new LatLon(Geo.parseDMS(cidadeUserLat),Geo.parseDMS(cidadeUserLon));coordsUser();},"json");}}
function coordsUser(){var myLatlng=new google.maps.LatLng(-22.553147478403194,-48.636474609375);var myOptions={zoom:6,center:myLatlng,mapTypeId:google.maps.MapTypeId.ROADMAP,navigationControl:true,navigationControlOptions:{style:google.maps.NavigationControlStyle.SMALL,position:google.maps.ControlPosition.RIGHT},mapTypeControl:false,sensor:'true'}
var map=new google.maps.Map(document.getElementById("mapa"),myOptions);$.get("crossDomainProxy.php?mode=native&url=http%3A%2F%2Fmaps.google.com%2Fmaps%2Fms%3Fie%3DUTF8%26hl%3Den%26vps%3D1%26jsv%3D252b%26msa%3D0%26output%3Dkml%26msid%3D114079406671054035664.000487f8a56123e603393%26time%3D12312312",function(data){var jData=$(data);documento=jData.find("Document");var strokeStyle=documento.find("Polygon").parent().find("styleUrl").text();var stroke=documento.find(strokeStyle).children("LineStyle").children("color").text();var strokeCor="#"+(stroke.substring(2,8).split("").reverse().join(""));var strokeOpacity=(parseInt((stroke.substring(0,2)),16)/255);var strokePeso=documento.find(strokeStyle).children("LineStyle").children("width").text();var poly=documento.find(strokeStyle).children("PolyStyle").children("color").text();var polyCor="#"+(poly.substring(2,8).split("").reverse().join(""));var polyFill=(parseInt((poly.substring(0,2)),16)/255);var coordenadas=documento.find("Polygon").children("outerBoundaryIs").children("LinearRing").children("coordinates").text();coordsPoligono=new Array;var resultado=coordenadas.split(" ").join("").replace(/^\s+|\s+$/g,"").replace(/^\s+/,"").replace(/\s+$/,"").replace(" ","").split("\n");for(var i=0;i<resultado.length;i++){var valor=resultado[i];valor=valor.split(",");var inserir=new google.maps.LatLng(valor[1],valor[0]);coordsPoligono.push(inserir)}
poligono=new google.maps.Polygon({clickable:false,paths:coordsPoligono,strokeColor:strokeCor,strokeOpacity:strokeOpacity,strokeWeight:strokePeso,fillColor:polyCor,fillOpacity:polyFill});poligono.setMap(map);documento.find("Polygon").parent().remove();var dist;documento.find("Placemark").each(function(){var cidadeNome=$(this).find("name").text();var cidadeDescription=$(this).find("description").text();var cidadeCoord=$(this).children("Point").children("coordinates").text();var resultado=cidadeCoord.split(" ").join("").replace(/^\s+|\s+$/g,"").replace(/^\s+/,"").replace(/\s+$/,"").replace(" ","").split("\n");for(var i=0;i<resultado.length;i++){var valor=resultado[i];valor=valor.split(",");var distCoord=new LatLon(Geo.parseDMS(valor[1]),Geo.parseDMS(valor[0]));var inserir=new google.maps.LatLng(valor[1],valor[0]);var cidadeLatLng=inserir;}
var dist=parseFloat(userLatLon.distanceTo(distCoord));var marker=new google.maps.Marker({position:cidadeLatLng,map:map,title:cidadeNome,distancia:dist});markersArray.push(marker)
google.maps.event.addListener(marker,"click",function(e){clearTimeout(mapaTimer);if($("#popup_custom").is(":visible")){$("#popup_custom").animate({opacity:0},500,function(){$(this).remove()});}
$("#popup_custom").remove();var infoBox=new InfoBox({latlng:cidadeLatLng,map:map,conteudo:cidadeDescription,cidade:cidadeNome});});cidades.push(cidadeNome);});var menorDistancia=9999;for(var i=0;i<markersArray.length;i++){var distancia=markersArray[i].distancia;if(distancia<menorDistancia){menorDistancia=distancia;marcadorProx=markersArray[i];}}
var minhaCidade=marcadorProx.title;$("#minha_cidade").html(minhaCidade);var hadHover=0;$("#mapa_overlay").hover(function(){if(hadHover==0){hadHover=1;clearTimeout(mapaTimer);mapaTimer=window.setTimeout("escondeIntro(true)",5000);}});$("#mapa_overlay").click(function(){clearTimeout(mapaTimer);escondeIntro(true);});$("#input_cidades").autocomplete({source:cidades,minLength:0,delay:0,select:function(event,ui){passarCidade(ui);}});$("#mostrar_todas").click(function(){if($("#input_cidades").autocomplete("widget").is(":visible")){$("#input_cidades").autocomplete("close");return false;}
$("#input_cidades").autocomplete("search","");$("#input_cidades").focus();return false;});},"xml")}
function passarCidade(ui){var escolherCidade=ui.item.value;documento.find("Placemark").each(function(){var nome=$(this).find("name").text();if(nome==escolherCidade){var description=$(this).find("description").text();var position=$(this).find("coordinates").text();if($("#popup_custom").is(":visible")){$("#popup_custom").animate({opacity:0},500,function(){$(this).remove()});}
for(var i=0;i<markersArray.length;i++){if(nome==markersArray[i].title){var abrir=markersArray[i];}}
clearTimeout(randomMarkerCtr);google.maps.event.trigger(abrir,'click');}});}
function escondeIntro(hadTimer){$("#mapa_overlay").fadeOut("slow",function(){if($("#popup_custom").is(":visible")){$("#popup_custom").css({opacity:1}).animate({opacity:0},500,function(){$(this).remove()});}
clearTimeout(mapaTimer);mapaTimer=window.setTimeout("google.maps.event.trigger(marcadorProx, 'click')",500);clearTimeout(randomMarkerCtr);randomMarkerCtr=window.setTimeout("randomMarker(1)",7000);});}
var randomMarkerCtr;var marcadorRandom=0;function randomMarker(controle){if(controle!=0){var total=markersArray.length;var indice=Math.floor(Math.random()*total+1);marcadorRandom=markersArray[indice];google.maps.event.trigger(marcadorRandom,'click');clearTimeout(randomMarkerCtr);randomMarkerCtr=window.setTimeout("randomMarker(1)",5000);}
else{clearTimeout(randomMarkerCtr);}}