var map;
var layerMapnik;
var layerOsma;

     function getOSMURL(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);
        x = ((x % limit) + limit) % limit;
        var url = this.url;
        var path = z + "/" + x + "/" + y + ".png";
        if (url instanceof Array)
          {
                url = this.selectUrl(path, url);
          }
          return url + path;
     }

function coCoord(lon,lat) {
    return new OpenLayers.LonLat(lon,lat).transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:900913"));
}

function init(){
    map = new OpenLayers.Map('map',
			     { maxExtent: new
			       OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),
			       numZoomLevels: 19,
			       maxResolution: 156543.0399,
			       units: 'm',
			       transitionEffect: "resize",
			       projection: new
			       OpenLayers.Projection("EPSG:900913")});
    
    layerMapnik = new OpenLayers.Layer.TMS("Mapnik",'http://tile.quiedeville.org/',{transitionEffect:'resize',getURL:getOSMURL});
    layerOsma = new OpenLayers.Layer.TMS("Osmarender",'http://tah.quiedeville.org/Tiles/tile.php/',{transitionEffect:'resize',getURL:getOSMURL});



    var layerMarkers = new OpenLayers.Layer.Markers("Markers");
    var size = new OpenLayers.Size(20,34);
    var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);    

    var iconCCI = new OpenLayers.Icon('http://boston.openguides.org/markers/RED.png',size,offset);
    var iconHeb = new OpenLayers.Icon('http://boston.openguides.org/markers/GREEN.png',size,offset);
    var iconCamp = new OpenLayers.Icon('http://boston.openguides.org/markers/BLUE.png',size,offset);
    var iconHall = new OpenLayers.Icon('http://boston.openguides.org/markers/YELLOW.png',size,offset);

    layerMarkers.addMarker(new OpenLayers.Marker(coCoord(-1.548815,47.249305),iconCamp));
    layerMarkers.addMarker(new OpenLayers.Marker(coCoord(-1.566131,47.257126),iconHeb));
    layerMarkers.addMarker(new OpenLayers.Marker(coCoord(-1.573888,47.206206),iconCCI));
    layerMarkers.addMarker(new OpenLayers.Marker(coCoord(-1.540403,47.205882),iconHall));


    map.addLayers([layerMapnik,layerOsma,layerMarkers]);

    map.setCenter(new OpenLayers.LonLat(-1.5497,47.2290).transform(new
								   OpenLayers.Projection("EPSG:4326"), new
								   OpenLayers.Projection("EPSG:900913")), 13);
    
    map.addControl(new
		   OpenLayers.Control.MousePosition({'displayProjection':new
			       OpenLayers.Projection("EPSG:4326")}));
    map.addControl(new OpenLayers.Control.ScaleLine());
    map.addControl(new OpenLayers.Control.LayerSwitcher({'ascending':false}));
}

function go(x,y,z){
   var center = new OpenLayers.LonLat(x,y).transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:900913"));
   map.setCenter(center, z);
}

function changeLayer(layer){
    if (layer == "osma") {
	map.setBaseLayer(layerOsma);
    } else {
	map.setBaseLayer(layerMapnik);
    }
}