    //<![CDATA[
    
    if (GBrowserIsCompatible()) { 

      // this variable will collect the html which will eventualkly be placed in the side_bar
      var side_bar_html = "";
      var centrolat = -33.406654;
      var centrolong = -70.557976;
      // arrays to hold copies of the markers used by the side_bar
      // because the function closure trick doesnt work there
      var gmarkers = [];
      
      iconocuadrado = new GIcon(G_DEFAULT_ICON);
      icononormal = new GIcon(G_DEFAULT_ICON);
      iconocuadrado.image="aca/icono_cuadrado_verde.gif";
      iconocuadrado.iconSize = new GSize(9,9);
      iconocuadrado.shadowSize = new GSize(0,0);
      iconocuadrado.iconAnchor = new GPoint(4, 9);
      iconocuadrado.infoWindowAnchor = new GPoint(4, 3);

      iconocuadradoverde = new GIcon(G_DEFAULT_ICON);
      iconocuadradoverde.image="aca/icono_cuadrado_naranja.gif";
      iconocuadradoverde.iconSize = new GSize(9,9);
      iconocuadradoverde.shadowSize = new GSize(0,0);
      iconocuadradoverde.iconAnchor = new GPoint(4, 9);
      iconocuadradoverde.infoWindowAnchor = new GPoint(4, 3);

      var gicons = [];
      gicons["cuadrado"] = iconocuadrado;
      gicons["normal"] = icononormal;
      gicons["cuadradoverde"] = iconocuadradoverde;


      // A function to create the marker and set up the event window
      // Dont try to unroll this function. It has to be here for the function closure
      // Each instance of the function preserves the contends of a different instance
      // of the "marker" and "html" variables which will be needed later when the event triggers.    


      function createMarker(point,name, html, icono, vel) {
        var marker = new GMarker(point, gicons[icono]);
        var geocoder = new GClientGeocoder();
        var direccion = "";
        geocoder.getLocations(point, function(addresses){
        if (!addresses || addresses.Status.code != 200) {
        direccion = "Dirección no encontrada" }
        else
        {
        var lugar = addresses.Placemark[0];
        direccion = lugar.address;
        }
        });

        GEvent.addListener(marker, "click", function() {
          marker.openInfoWindowHtml(html + "<br/>" + direccion);
        });

        // save the info we need to use later for the side_bar
        gmarkers.push(marker);
        // add a line to the side_bar html
        side_bar_html += '<a href="javascript:myclick(' + (gmarkers.length-1) + ')">' + name + ' - ' + vel +'kph<\/a><br>';

        return marker;
      }

      // This function picks up the click and opens the corresponding info window
      function myclick(i) {
        GEvent.trigger(gmarkers[i], "click");
      }

      function cargarxml(valor, zoom)
      {

        //se activa el mensaje "cargando"
        if(document.getElementById("cargando")){
            mostrarCargando();
        }

      //se cambian los 4 markers embedded por la lectura del xml
      // Read the data from example.xml
        document.getElementById("side_bar").innerHTML = '';
        side_bar_html = "";
        GDownloadUrl(valor, function(doc) {
        var xmlDoc = GXml.parse(doc);
        var markers = xmlDoc.documentElement.getElementsByTagName("marker");
        map.clearOverlays(); 
        for (var i = 0; i < markers.length; i++) {
          // obtain the attribues of each marker
          var lat = parseFloat(markers[i].getAttribute("lat"));
          var lng = parseFloat(markers[i].getAttribute("lng"));
          var point = new GLatLng(lat,lng);
          var html = markers[i].getAttribute("html");
          var label = markers[i].getAttribute("label");
          var icono = markers[i].getAttribute("icono");
          var vel = markers[i].getAttribute("vel");
          // create the marker
          var marker = createMarker(point,label,html, icono, vel);
          map.addOverlay(marker);
          if (i==0){
          centrolat = lat; 
          centrolong = lng;
          }
        }
        // put the assembled side_bar_html contents into the side_bar div
        document.getElementById("side_bar").innerHTML = side_bar_html;
          map.setCenter(new GLatLng(centrolat,centrolong),zoom);
            if(document.getElementById("cargando")){
                esconderCargando();
            }
      });
      }
    
      // Display the map, with some controls and set the initial location 
      var map = new GMap2(document.getElementById("map"));
      map.addControl(new GLargeMapControl());
      map.addControl(new GMapTypeControl());

    
      //se cambian los 4 markers embedded por la lectura del xml
      // Read the data from example.xml
      /*GDownloadUrl("gps.xml", function(doc) {
        var xmlDoc = GXml.parse(doc);
        var markers = xmlDoc.documentElement.getElementsByTagName("marker");
          
        for (var i = 0; i < markers.length; i++) {
          // obtain the attribues of each marker
          var lat = parseFloat(markers[i].getAttribute("lat"));
          var lng = parseFloat(markers[i].getAttribute("lng"));
          var point = new GLatLng(lat,lng);
          var html = markers[i].getAttribute("html");
          var label = markers[i].getAttribute("label");
          var icono = markers[i].getAttribute("icono");
          // create the marker
          var marker = createMarker(point,label,html, icono);
          map.addOverlay(marker);
          if (i==0){
          centrolat = lat; 
          centrolong = lng;
          
          }
        }
        // put the assembled side_bar_html contents into the side_bar div
        document.getElementById("side_bar").innerHTML = side_bar_html;
    map.setCenter(new GLatLng(centrolat,centrolong),10);

      });
*/
      map.setCenter(new GLatLng(centrolat,centrolong),10);
    }
    
    // display a warning if the browser was not compatible
    else {
      alert("Sorry, the Google Maps API is not compatible with this browser");
    }

    // This Javascript is based on code provided by the
    // Community Church Javascript Team
    // http://www.bisphamchurch.org.uk/   
    // http://econym.org.uk/gmap/

    //]]>
