var map, wms, vectors;

function init(coverage){
	if(coverage == null){
		coverage = "maps";
	}
	map = new OpenLayers.Map("maps_map", {numZoomLevels: 6});

	var wms = new OpenLayers.Layer.WMS( "World", "http://labs.metacarta.com/wms/vmap0", {layers: 'basic'} );
	// map.addLayer(wms);
	layer_options = {
		format: OpenLayers.Format.GeoJSON, 
		styleMap: build_style(), 			
		isBaseLayer: true, 
		displayProjection: new OpenLayers.Projection("EPSG:4326"),
		visibility: false,
		wrapDateLine: true};
		
	var google_maps = new OpenLayers.Layer.GML("Google maps", "data/google_"+coverage+".json", layer_options);
	var mapquest_maps = new OpenLayers.Layer.GML("MapQuest maps", "data/mapquest_"+coverage+".json", layer_options);
	var microsoft_maps = new OpenLayers.Layer.GML("Microsoft maps", "data/microsoft_"+coverage+".json", layer_options);
	var osm_maps = new OpenLayers.Layer.GML("OpenStreetMap maps", "data/osm_"+coverage+".json", layer_options);
	map.addLayers([google_maps, mapquest_maps, microsoft_maps, osm_maps]);
	// map.addControl(new OpenLayers.Control.LayerSwitcher());
	map.addControl(new OpenLayers.Control.LayerSwitcher({'div':OpenLayers.Util.getElement('layerswitcher')}));

	google_maps.setVisibility(true);
	map.setCenter(new OpenLayers.LonLat(0, 20),2);

	var options = {
		hover: true,
		onSelect: function(feature) { 
			$("info").innerHTML = feature.attributes.name; // + ": "+ feature.attributes.value; 
		}};
	var select = new OpenLayers.Control.SelectFeature(google_maps, options);
	map.addControl(select);
	select.handler.stopDown = false;
	select.handler.stopUp = false;
	select.activate();
}

function build_style() {
	var theme = new OpenLayers.Style();
	var ruleYes = new OpenLayers.Rule({
		filter: new OpenLayers.Filter.Comparison({
			type: OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO,
			property: "value",
			value: 70 }),
			symbolizer: {"Polygon": {'fillColor': '#7fbf7b'}}
		});
	var ruleSome = new OpenLayers.Rule({filter: new OpenLayers.Filter.Logical({
		type: OpenLayers.Filter.Logical.AND,
		filters: [ 
		new OpenLayers.Filter.Comparison({
			type: OpenLayers.Filter.Comparison.LESS_THAN,
			property: "value",
			value: 70
			}),
			new OpenLayers.Filter.Comparison({
				type: OpenLayers.Filter.Comparison.GREATER_THAN,
				property: "value",
				value: 0
			})
			]
			}),
			symbolizer: {"Polygon": {'fillColor': '#ffffbf'}}
		});
	var ruleNo = new OpenLayers.Rule({filter: new OpenLayers.Filter.Comparison({
		type: OpenLayers.Filter.Comparison.LESS_THAN,
		property: "value",
		value: 10
		}),
		symbolizer: {"Polygon": {'fillColor': '#fc8d59'}}
	});
	theme.addRules([ruleNo, ruleSome, ruleYes]);

	var stylemap = new OpenLayers.StyleMap({'default':theme, 'select': {'strokeColor': '#888888', 'fillColor': '#0000ff', 'strokeWidth': 1}});
	return stylemap;
}            
