    //<![CDATA[
    var coords = new Coords();
    var def_id = coords.get_default();

    if (GBrowserIsCompatible()) {
	// Some constants
	var MAP_ZOOM=15;
	var ICON_DEF= '/images/bicing/star_high.png';
	var ICON_NOR= '/images/bicing/star_base.png';
	var CLASS_NOR='menunormal';
	var CLASS_SEL='menuselected';
	var MENU_ID  = 'mapmenu';
	var MENU_ITEM= 'menuitem';

	var MAP_CENTRE_LAT=41.408955;
	var MAP_CENTRE_LNG=2.168083;
	var OLD_MENU = null;
	if ( coords.get_length() > 0 )
	{
  	  var values = coords.get_elements(def_id);
	  OLD_MENU = def_id;
          MAP_CENTRE_LAT=values[1];
          MAP_CENTRE_LNG=values[2];
	}

	// Load the icons
	var icon_empty = new GIcon();
	icon_empty.image = "/images/bicing/icono_mark.png";
 	icon_empty.iconSize = new GSize(17, 17);
	icon_empty.iconAnchor = new GPoint(6, 20); 
	icon_empty.infoWindowAnchor = new GPoint(5, 1);
    
	var icon_bikes = new GIcon(icon_empty,"/images/bicing/icono_mark_green.png");
	
	// Create the map object  
        var map = new GMap2(document.getElementById("map"));
	map.addControl(new GLargeMapControl());
	map.addControl(new GMapTypeControl());

	// A function to change the menu 
	function changeMapPoint(id,lat,lng)
	{
	  map.clearOverlays();
	  if ( OLD_MENU != null )
	  {
		var oldmenu = document.getElementById(MENU_ITEM+OLD_MENU);
		oldmenu.className = CLASS_NOR;
	  }
	  drawMap( lang, lat, lng );
	  var newmenu = document.getElementById(MENU_ITEM+id);
	  newmenu.className = CLASS_SEL;
	  OLD_MENU=id;
	} // changeMapPoint

	// A function to add a menu for a particular point
	function addPointMenu(id)
	{
	   var values = coords.get_elements( id ); 
	   var name = values[0];

	   var menuitem = document.createElement('li');
	   menuitem.id  = MENU_ITEM+id;
	   menuitem.onclick = function() {
			 changeMapPoint(id,values[1],values[2])
		};

	   var menutext = document.createTextNode( name );
	   var defimg = document.createElement('img');

           if ( id == coords.get_default() )
           {
                defimg.src = ICON_DEF;
		menuitem.className = CLASS_SEL;
           } else {
                defimg.src = ICON_NOR;
		menuitem.className = CLASS_NOR;
           }

  	   //menuitem.appendChild(defimg);
	   menuitem.appendChild(menutext);

	   var scr = document.getElementById(MENU_ID);
	   scr.appendChild(menuitem);
	} // addPointMenu

	// A function to create the marker and set up the event window
	// for a bicing station
	function createMarker(station,lang)
	{
          // Language definitions 
          var btext = new Array();
	  btext['ca'] = 'Bicicletes';
	  btext['en'] = 'Bicycles';
	  btext['es'] = 'Bicicletas';
	  var stext = new Array();
	  stext['ca'] = 'Espais buits';
	  stext['en'] = 'Spaces';
	  stext['es'] = 'Espacios';

	  // obtain the attributes of each marker
          var lat = parseFloat(station.getAttribute("lat"));
          var lng = parseFloat(station.getAttribute("lng"));
          var bikes = parseFloat(station.getAttribute("bikes"));
          var spots = parseFloat(station.getAttribute("spots"));
          var text = station.getAttribute("text");

          var point = new GLatLng(lat,lng);
          var html = "<p>"+text+"</p><p>"+btext[lang]+": "+bikes+"<br />"+stext[lang]+": "+spots+"</p>";

	  var marker = new GMarker(point,icon_empty);
	  if ( bikes > 0 )
		marker = new GMarker(point,icon_bikes);

	  GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml(html);
	  });
	  return marker;
	} // createMarker

	// A function to draw the map with the correct points
	function drawMap(lang,mlat,mlng)
	{
	  var xml_file="paradas.cgi?lat=" + mlat + "&long="+ mlng;
	  // center the map
	  map.setCenter(new GLatLng( mlat, mlng), MAP_ZOOM );
      
	  // Setup the Marker Manager 
	  var mgr = new GMarkerManager(map);

	  // Read the data from xml file
	  var request = GXmlHttp.create();
	  request.open("GET", xml_file , true);
	  request.onreadystatechange = function() {
	     if (request.readyState == 4)
	     {
		var xmlDoc = GXml.parse(request.responseText);
		var markers = xmlDoc.documentElement.getElementsByTagName("marker");
		for (var i = 0; i < markers.length; i++)
		{
		  mgr.addMarker( createMarker( markers[i], lang ) ,0);
		} 
	     } // ready state
	  } 
          request.send(null);
	}  // drawMap

	for (var i=0; i<coords.get_length(); i++)
	{
	  addPointMenu(i);
	}
	drawMap(lang, MAP_CENTRE_LAT, MAP_CENTRE_LNG);
    }
    else {
      alert("Sorry, the Google Maps API is not compatible with this browser");
    }
    //]]>
