//functions relevant to a maplet on a page.
function mapInit()
{
	if (typeof window.maplet != 'undefined') {
		initMaplet(maplet, easting, northing);
	}
}

function initMaplet(map_type, easting, northing)
{
	osMap = new OpenSpace.Map('map');
	console.log('foo');
	nav_control = osMap.getControlsByClass('OpenLayers.Control.Navigation')[0];
	nav_control.disableZoomWheel();
	pos = new OpenSpace.MapPoint(easting, northing);
	osMap.setCenter(pos, 8, false, true);
	bounds = osMap.getExtent();
	
	if (map_type == 'route') {
		osMap.zoomToExtent(route_bounds);
	} else {
		osMap.zoomToExtent(bounds);
		osMap.addControl(new OpenSpace.Control.SmallMapControl());
	}
	
//	remove the smallControl if not route
	if (map_type !== 'route' && osMap.getControlsByClass('OpenLayers.Control.Navigation').length > 0) {
		parNode = osMap.getControlsByClass("OpenSpace.Control.LargeMapControl")[0].div.parentNode;
		parNode.removeChild(osMap.getControlsByClass("OpenSpace.Control.LargeMapControl")[0].div);
	}
	generateWhiteBgBox(osMap.getExtent());
	
	
	var wwaylookup = {
			0: {strokeColor: '#0000ff', strokeWidth: 6}
	};
	wwayStyleMap.addUniqueValueRules('default', 'selected', wwaylookup);
	
	wwayLayer = new OpenLayers.Layer.Vector('waterways',{styleMap: wwayStyleMap, resolutions: [200, 100, 50, 25, 10, 5, 2.5, 2, 1], displayInLayerSwitcher: false});
	osMap.addLayer(wwayLayer);
	createWaterways();
	
	switch(map_type) {
	case 'fishery':
		
		var fishlookup = {
				0: {externalGraphic: '/media/images/site/icons/map/fishery/${display_type}.png'},
				1: {externalGraphic: '/media/images/site/icons/map/fishery_selected.png'}
		};
		fisheryStyleMap.addUniqueValueRules('default', 'selected', fishlookup);
		fisheryLayer = new OpenLayers.Layer.Vector('fisheries', {styleMap: fisheryStyleMap, resolutions: [25, 10, 5, 2.5, 2, 1]});
		osMap.addLayer(fisheryLayer);
		createFisheries();
		break;
	case 'service':
		var servlookup = {
				0: {externalGraphic: '/media/images/site/icons/map/service/${display_type}.png'},
				1: {externalGraphic: '/media/images/site/icons/map/service_selected.png'}
		};
		serviceStyleMap.addUniqueValueRules('default', 'selected', servlookup);
		serviceLayer = new OpenLayers.Layer.Vector('services', {styleMap: serviceStyleMap, resolutions: [25, 10, 5, 2.5, 2, 1]});
		osMap.addLayer(serviceLayer);
		createServices();
		break;
	case 'attraction':
		var attrlookup = {
				0: {externalGraphic: '/media/images/site/icons/map/attraction/${display_type}.png'},
				1: {externalGraphic: '/media/images/site/icons/map/attraction_selected.png'}
		};
		attractionStyleMap.addUniqueValueRules('default', 'selected', attrlookup);
		attractionLayer = new OpenLayers.Layer.Vector('attractions', {styleMap: attractionStyleMap, resolutions: [25, 10, 5, 2.5, 2, 1]});
		osMap.addLayer(attractionLayer);
		createAttractions();
		break;
	case 'route':
		if (route_type == 'cycling') {
			routeLayer = new OpenLayers.Layer.Vector('routes', {styleMap: routeCyclingStyleMap, resolutions: [2500, 1000, 500, 200, 100, 50, 25, 10, 5, 2.5, 2, 1]});
		} else if (route_type == 'walking') {
			routeLayer = new OpenLayers.Layer.Vector('routes', {styleMap: routeWalkingStyleMap, resolutions: [2500, 1000, 500, 200, 100, 50, 25, 10, 5, 2.5, 2, 1]});
		} else {
			var routelookup = {
				'cycling': {externalGraphic: '/media/images/site/icons/map/attraction/cycling.png'},
				'walking': {externalGraphic: '/media/images/site/icons/map/attraction/walking.png'},
				'boating': {externalGraphic: '/media/images/site/icons/map/attraction/boating.png'}
			};
			routeStyleMap.addUniqueValueRules('default','rtype',routelookup);
			routeLayer = new OpenLayers.Layer.Vector('routes', {styleMap: routeStyleMap, resolutions: [2500, 1000, 500, 200, 100, 50, 25, 10, 5, 2.5, 2, 1]});
		}
		
		osMap.addLayer(routeLayer);
		routeLayer.addFeatures(routes);
		break;
	default:
		eventLayer = new OpenLayers.Layer.Vector('events', {styleMap: eventStyleMap, resolutions: [25, 10, 5, 2.5, 2, 1]});
		osMap.addLayer(eventLayer);
		point = new OpenLayers.Geometry.Point(easting, northing);
		evt = new OpenLayers.Feature.Vector(point, {name: 'a test event'});
		eventLayer.addFeatures(evt);
		break;
	}
	
	osMap.events.register('moveend', osMap, function(e) {
		redrawMaplet();
	});
	
	setupControls();

	chosenmaptype = map_type + 'Control';
	
	for(key in controls) {
		osMap.addControl(controls[key]);
		//set wwayControl as the default
		if (key == chosenmaptype && chosenmaptype != 'eventControl') {
			chosencontrol = controls[key];
			controls[key].activate();
		}
	}
}

function redrawMaplet()
{
	if (popup_open) {
		return;
	}
	//remove and regenerate whitebg layer
	if (typeof whiteLayer != 'undefined') {
		whiteLayer.destroy();
		generateWhiteBgBox(osMap.getExtent());
	}
	createWaterways();
	previousbounds = osMap.getExtent();
	previouszoom = osMap.getZoom();
}

