function CGMapTypeOSM(tile) {
	// copyright object
	var copyOSM = new GCopyrightCollection("<a href=\"http://www.openstreetmap.org/\">OpenStreetMap</a>");
	copyOSM.addCopyright(new GCopyright(1, new GLatLngBounds(new GLatLng(-90, -180), new GLatLng(90, 180)), 0, " "));

	var options;

	// select tiles layer
    switch (tile) {
		case 'mapnik':
			options = {
				title : 'Map',
				url   : 'http://tile.openstreetmap.org/{Z}/{X}/{Y}.png'
			};
			break;
		case 'osmarender':
			options = {
				title : 'Карта',
				url   : 'http://tah.openstreetmap.org/Tiles/tile/{Z}/{X}/{Y}.png'
			};
			break;
		default:
			throw new Error("'" + tile + "' is unknown OSM tile layer.");
			return;
    }

	var tiles = new GTileLayer(copyOSM, 1, 17, { tileUrlTemplate: options['url'] });

	GMapType.call(this, [tiles], G_NORMAL_MAP.getProjection(), options['title']);
}

CGMapTypeOSM.prototype = new GMapType();

// create new map types in global scope
var CG_OSM_MAPNIK_MAP = new CGMapTypeOSM('mapnik');
var CG_OSM_OSMARENDER_MAP = new CGMapTypeOSM('osmarender');
