// JavaScript Document
    
    var comEndereco = false;
    var coordenadas = false;
    var endereco = '';
    var mapIsLoad;
    var enderecosCount = 0;
    var gmap;
    var mapIdSub;
    var y_inf = -23.339103564687345;
    var y_sup = -24.026396666017327;
    var x_esq = -46.85462951660156;
    var x_dir = -46.349945068359375;
    var centro_lat = -23.6759705452648;
    var centro_lng = -46.60675048828125;
    var centro;
    var layer;
    var imgCinza;
    var imgVerde;
    var userPlaces =[];
    var geocoder
    var tooltip;

    google.load("maps", "2.x");

    $(function() {
       
        $('#linkmapa').css({color:'#FFFF00'});
        
        iniciarMapa();
        tooltip = document.createElement("div");
        gmap.getPane(G_MAP_FLOAT_PANE).appendChild(tooltip);
        tooltip.style.visibility="hidden";
        
        var index = 0;
        $('#listaenderecos').change(irParaEndereco);
       
        jQuery("#procurar").click(procurarEndereco);
        
        jQuery('#endereco').keypress( function (event) {
            
            if (event.keyCode == 13) { 
                procurarEndereco();
                event.preventDefault();
            };
           
        });
        
        endereco = Url.decode($.jget['endereco']);
        coordenadas = $.jget['c'];
        
        if (endereco == undefined || !endereco || endereco == 'undefined')  endereco = '';
        
        if (endereco) {
            
            jQuery("#endereco").val(endereco);
            procurarEndereco();
            
        }
        
    });

    function iniciarMapa() {
        
        mapIsLoad = true;
        gmap = new google.maps.Map2(document.getElementById("mapa"));
        geocoder = new GClientGeocoder();
        gmap.addControl(new GLargeMapControl());
        gmap.addControl(new GScaleControl());
        gmap.addControl(new GMapTypeControl());
        gmap.setMapType(G_HYBRID_MAP);
        
        GEvent.addListener(gmap, 'zoomend', function(oldLevel,newLevel) {
           
            if (newLevel < 11)adm_fAddLayer();
            else adm_fRemoveLayer();
            
        });
        
        centro = getPoint(centro_lat, centro_lng);
        
        gmap.setCenter(centro, 10);
        adm_fAddLayer();
        adm_fSetMarkersSubs();
        
    };

    function finalizeMapa() {
        
        if (mapIsLoad) {
            
            GUnload();
            mapIsLoad = false;
        }
    };
    
    function irParaRegiao(index){
        
        var obj   = objSubs.objs[index]
        var ponto = new GLatLng(obj.lat, obj.lng)
        
        gmap.panTo(ponto)
        
        var content = "<strong>Subprefeitura " + obj.nome + "</strong><p>Bairros/Distritos administrativos:</p>" + obj.bairros ;
        content += "<p><a style='color:skyblue; font-style:italic; text-decoration:underline;' href='regioes.php?regiao=" + obj.idSub + "'>Ir para a p&aacute;gina</a>";
        gmap.openInfoWindowHtml(ponto, content);
        return false;
        
    };
    
    
    function adm_fCloseInfoWindow(){
        
        gmap.closeInfoWindow();
        
    };
    
    function adm_fAddLayer(){
        
        if (layer) return;
       
        var ponto1 = getPoint(y_sup, x_esq);
        var ponto2 = getPoint(y_inf, x_dir);
        
        var limites = new GLatLngBounds(ponto1, ponto2 );
        layer = new GGroundOverlay('mapa.png', limites);
       
        gmap.addOverlay(layer);
        
    };
    
    function adm_fRemoveLayer(){
        
        if (!layer) return 
        gmap.removeOverlay(layer); 
        layer = false;
        
    };
    
    function adm_fSetMarkersSubs(){
        
        var c = objSubs.objs.length;
        var tinyIcon = new GIcon();
        var i;
       
        tinyIcon.image  = "http://labs.google.com/ridefinder/images/mm_20_blue.png";
        tinyIcon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
        tinyIcon.iconSize   = new GSize(12, 20);
        tinyIcon.shadowSize = new GSize(22, 20);
        tinyIcon.iconAnchor = new GPoint(6, 20);
        tinyIcon.infoWindowAnchor = new GPoint(5, 1);
       
        for (i = 0; i < c; i++) {
            
            var obj  = objSubs.objs[i];
            gmap.addOverlay(getMarca(obj,tinyIcon));
        }
        
    };
    
    function getPoint(lat,lng){
        
        return(new GLatLng(lat, lng));
        
    };
    
    function getMarca(obj, icon){
        
        var ponto  = getPoint(obj.lat, obj.lng);
        var opcoes = {draggable:false,icon:icon};
        
        var marca  = new GMarker(ponto,opcoes);
        marca.tooltip = '<div class="tooltip"><nobr>'+ obj.nome +'</nobr></div>';  
        marca.index = obj.index;
        
        GEvent.addListener (marca, "click", function() {
            
            var content = "<strong>Subprefeitura " + obj.nome + "</strong><p>Bairros/Distritos administrativos:</p>" + obj.bairros ;
            content += "<p><a style='color:skyblue; font-style:italic; text-decoration:underline;' href='regioes.php?regiao=" + obj.idSub + "'>Ir para a p&aacute;gina</a>";
            
            gmap.panTo(marca.getLatLng());
            gmap.openInfoWindowHtml(marca.getLatLng(), content);
            
        });
        
        GEvent.addListener(marca, "mouseover", function() {
            showTooltip(marca);
        });
        
        GEvent.addListener(marca, "mouseout", function() {
            tooltip.style.visibility = "hidden"
        }); 
        
        return marca
        
    };
    
    function centerMap(){
        
        gmap.panTo(centro,10);
    };
    
    function getCenter(){
       
        centro = gmap.getCenter();
        var z  = gmap.getZoom();
        alert(centro.lat() +" : " + centro.lng() + ' z : ' + z)
    };
    
    function panTo (lat, lon){
        
        var ponto =  getPoint(lat, lon);
        var marca  = new GMarker(centro);
        var tinyIcon = new GIcon();
        tinyIcon.image = "http://labs.google.com/ridefinder/images/mm_20_blue.png";
        tinyIcon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
        tinyIcon.iconSize   = new GSize(12, 20);
        tinyIcon.shadowSize = new GSize(22, 20);
        tinyIcon.iconAnchor = new GPoint(6, 20);
        tinyIcon.infoWindowAnchor = new GPoint(5, 1); 
        
        GEvent.addListener(marca, "click", function() {
          
            var content = "<strong>Meu endere&ccedil;o</strong>"
            gmap.openInfoWindowHtml(marca.getLatLng(), content);
            
        });
        
        gmap.setCenter(ponto);
       // gmap.addOverlay(marca,tinyIcon);
        
    };

    function obj(id) { 
        
        return document.getElementById(id);
        
    };


    assignCinza = function(){ this.src = imgCinza.src };
    assignImage = function(){ $(this).addClass('linkSub')};
    assignClick = function(){ $(this).click(function(){var index = this.id.substring(1);  adm_fSelectSubMap(index)})};
    
    assignHover = function(){
        
        $(this).hover(function(){ $(this).addClass('bold') },
        function () { $(this).removeClass('bold')})
    };


    function removerEndereco(id) {
        
        $('#end' + id).remove();
        
    };

    function irParaEndereco(){
        
        var coordenadas = jQuery('#listaenderecos').val();
        if (coordenadas == "-1") return;
        coordenadas = coordenadas.split('|');
        var index = coordenadas[2];
        var endereco = jQuery('#listaenderecos  > option:selected' ).html();
        var ponto = new GLatLng(coordenadas[0], coordenadas[1]);
        
        gmap.setCenter(ponto);
        gmap.openInfoWindowHtml(ponto,endereco);
        
    };

    function procurarEndereco() {
        
        var endereco = jQuery("#endereco").val();
        geocoder.getLocations(endereco, criarEndereco);
        
    };

    function criarEndereco(response) {
        
        jQuery('#listaenderecos').empty();
       
        
        if (!response ||response.Status.code != 200) {
            
            jQuery('#listaenderecos').addOption(null, 'Endere&ccedil;o n&atilde;o localizado');
            
        } else {
            
            var i = response.Placemark.length;
            var coordenadas;
           
            if (i > 0) {
                
                index = 0;
                for (var c = 0; c < i; c++) {
                    
                    place = response.Placemark[c];
                    endereco = $.trim(place.address);
                    
                    point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]);
                    coordenadas = point.lat() + "|" + point.lng() +"|" + index;
                    
                    index++;
                   
                    if (endereco.length > 0 )
                        jQuery('#listaenderecos').addOption(coordenadas, endereco);
                   
                };  
                
                jQuery('#listaenderecos').addOption (-1, 'Localizados');
              
                
            };
            
            
        };
        
        if (coordenadas) {
            
            jQuery('#listaenderecos option[@value^=' + coordenadas +']').attr({selected:true});
            coordenadas = false;
            irParaEndereco();
        }
            
       /*
        jQuery("#endereco").val("");
        jQuery('#listaenderecos > option:first').attr('select', true);
        alert( jQuery('#listaenderecos > option:first').text());
        
      */
    };

    function showTooltip(marca) {
        
        tooltip.innerHTML = marca.tooltip;
        var point=gmap.getCurrentMapType().getProjection().fromLatLngToPixel(gmap.fromDivPixelToLatLng(new GPoint(0,0),true),gmap.getZoom());
        var offset=gmap.getCurrentMapType().getProjection().fromLatLngToPixel(marca.getPoint(),gmap.getZoom());
        var anchor=marca.getIcon().iconAnchor;
        var width=marca.getIcon().iconSize.width;
        var height=tooltip.clientHeight;
        var pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(offset.x - point.x - anchor.x + width, offset.y - point.y -anchor.y -height));
        pos.apply(tooltip);
        tooltip.style.visibility="visible";
    }