
function lonLatToMercator(ll) {
            var lon = ll.lon * 20037508.34 / 180;
            var lat = Math.log (Math.tan ((90 + ll.lat) * Math.PI / 360)) / (Math.PI / 180);
            lat = lat * 20037508.34 / 180; 
			
			return new OpenLayers.LonLat(lon, lat);
        }	


// Tiles de OSM
		
function getTileURL(bounds) {
   var res = this.map.getResolution();
   var x = Math.round((bounds.left - this.maxExtent.left) / (res * this.tileSize.w));
   var y = Math.round((this.maxExtent.top - bounds.top) / (res * this.tileSize.h));
   var z = this.map.getZoom();
   var limit = Math.pow(2, z);

   if (y < 0 || y >= limit)
   {
     return null;
   }
   else
   {
     x = ((x % limit) + limit) % limit;

     return this.url + z + "/" + x + "/" + y + "." + this.type;
   }
}
	
//--------------------------------	
		
function createMap(divName, centre, zoom) {
   OpenLayers.Util.onImageLoadError = function() {
      this.src = "white.png";
   }
		
			//var lat=43.463232
			//var lon=-3.803411
			//var zoom=15
			var map, layer;
		
            //map = new OpenLayers.Map('map');
            map = new OpenLayers.Map(divName,  
            { controls: [
			new OpenLayers.Control.LayerSwitcher(),
			//new OpenLayers.Control.Permalink(),
			//new OpenLayers.Control.Permalink('permalink'),
			new OpenLayers.Control.Navigation(),
			//new OpenLayers.Control.MousePosition(),
            new OpenLayers.Control.PanZoomBar(),
			//new OpenLayers.Control.OverviewMap(),
            new OpenLayers.Control.Attribution()
			], maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),
                      maxResolution:156543.0399, units:'meters', 'numZoomLevels':19, projection: 'EPSG:900913'
			});

			var mapnik = new OpenLayers.Layer.TMS("Callejero OSM", "http://tile.openstreetmap.org/",
			{ type: 'png', getURL: getTileURL, displayOutsideMaxExtent: true });
			map.addLayer(mapnik);

			if (!map.getCenter()) map.setCenter(centre, zoom);
			return map;
			
			//map.setCenter(center, zoom);
			

        }
