if (Drupal.jsEnabled) {
	$(document).ready( function() {
		
		fwCheck(); // to prevent errors in ie6 and ie7 
		  
		function fwCheck(){
			var test;
			try {
				var vtest = (!!document.namespaces);
				test = true;
			} catch(e) {
				test = false;
				setTimeout(fwCheck,100); 
			}
			if (test) {
				fw_test_fu();
			}
		}
		
	    function fw_test_fu() {
			var map;
			var shapeTypeNone = 0;
			var shapeTypeCircle = 1;
			var shapeTypeRect = 2;
			var shapeTypePolygon = 3;
			var shapeTypePoint = 4;
	
			var drawShapeType = null;
			var modifyEnabled = true;
	
			var bngProjection = new OpenLayers.Projection("EPSG:27700");
			OpenLayers.IMAGE_RELOAD_ATTEMPTS = 3;
			OpenLayers.Util.onImageLoadErrorColor = "transparent";
			
			var mapOptions = {
				projection : new OpenLayers.Projection("EPSG:900913"),
				displayProjection : new OpenLayers.Projection("EPSG:27700"),
				numZoomLevels : null,
				minZoomLevel : 5,
				maxZoomLevel : 15,
				units : "m",
				maxExtent : new OpenLayers.Bounds(-1185000, 7035000, 196500, 8815000),
				controls : [new OpenLayers.Control.Navigation(), new OpenLayers.Control.PanZoomBar()],
				eventListeners: {zoomend: mapEvent}
			}
			
			map = new OpenLayers.Map('map', mapOptions);
			
			// create Google Mercator layers
			var gphy = new OpenLayers.Layer.Google("Google Physical", {
				type : G_PHYSICAL_MAP,
				sphericalMercator : true
			});
	
			/*var gmap = new OpenLayers.Layer.Google("Google Streets", {
				sphericalMercator : true
			});
	
			var ghyb = new OpenLayers.Layer.Google("Google Hybrid", {
				type : G_HYBRID_MAP,
				sphericalMercator : true
			});*/
			
			// create a vector layer for drawing
			vectors = new OpenLayers.Layer.Vector("Geocode Group");
			var fontSettings = Drupal.settings.floodwarningMap.fontSettings;
			var isOneMap = (Drupal.settings.floodwarningMap.map_type == "one");
			var displayBackMap = (isOneMap || Drupal.settings.floodwarningMap.map_type == "single");
			
			// bottom layer for areas
			if (displayBackMap) {
				backVector = new OpenLayers.Layer.Vector("Geocode Background");
				try {
				    map.addLayers( [ gphy, /*gmap, ghyb,*/ backVector, vectors ]);
				} catch(e) {
				    map.zoomToMaxExtent();
				}
			} else {
				try {
				    map.addLayers( [ gphy, /*gmap, ghyb,*/ vectors ]);
				} catch(e) {
				    map.zoomToMaxExtent();
				}
			}
		
			/*map.addControl(new OpenLayers.Control.LayerSwitcher());*/
			
			var highlightCtrl = new OpenLayers.Control.SelectFeature(vectors, {
			  hover: true,
			  renderIntent: "temporary",
			  eventListeners: {
			    beforefeaturehighlighted: hoverOn,
	        featurehighlighted: hoverOff,
	        featureunhighlighted: hoverOff
			  },		
			  callbacks: {
			    click: areaClick
			  }
			});
	
			map.addControl(highlightCtrl);
			/*map.addControl(new OpenLayers.Control.LayerSwitcher());*/
	
			highlightCtrl.activate();
			
			//map.addControl(new OpenLayers.Control.EditingToolbar(vectors));
			
			if (displayBackMap) {
				var areas = Drupal.settings.floodwarningMap.areas;
				for ( var i in areas) {
					drawArea(backVector, areas[i].x, areas[i].y, areas[i].color, areas[i].borderColor, areas[i].id, areas[i].name, isOneMap?2:4, 0, 0, 0, '');
				}
				var areas = Drupal.settings.floodwarningMap.regions;
			} else {
				var areas = Drupal.settings.floodwarningMap.areas;
			}
			if (Drupal.settings.floodwarningMap.map_type != "single") {
				for ( var i in areas) {
					drawArea(vectors, areas[i].x, areas[i].y, areas[i].color, areas[i].fontColor, areas[i].id, areas[i].name, isOneMap?3:1, isOneMap?areas[i].fontSize:0, isOneMap?areas[i].fontFrom:0, isOneMap?areas[i].fontTo:0, areas[i].url);
				}
			}
			
			if (Drupal.settings.floodwarningMap.map_type == "all") {
				map.zoomTo(1);
			} else if (displayBackMap) {
				var geometry = backVector.features[0].geometry;
				geometry.calculateBounds();
				
				map.zoomToExtent(geometry.getBounds());
			} else {
				var geometry = vectors.features[0].geometry;
				geometry.calculateBounds();
				var onebounds = geometry.getBounds();
				var maxX = onebounds.right;
				var maxY = onebounds.top;
				var minX = onebounds.left;
				var minY = onebounds.bottom;
				var onebounds;
				for ( var i in vectors.features) {
					geometry = vectors.features[i].geometry;
					geometry.calculateBounds();
					onebounds = geometry.getBounds();
					if (maxX < onebounds.right) maxX = onebounds.right;
					if (maxY < onebounds.top) maxY = onebounds.top;
					if (minX > onebounds.left) minX = onebounds.left;
					if (minY > onebounds.bottom) minY = onebounds.bottom;
				}
				var bounds = new OpenLayers.Bounds(maxX,minY,minX,maxY);
				map.zoomToExtent(bounds);
			}
			
			$('#map').appendTo('#map_goes_here');
			
			function areaClick(event) {
				if (event.attributes.regionId) {
					location.href = Drupal.settings.floodwarningMap.url+"info/group-id/"+event.attributes.regionId;
				} else {
					window.open(event.attributes.url); 
				}
			}
	
			function drawArea(layer, xPointValues, yPointValues, color, fontColor, region, label, mapType, fontSize, from, to, url) {
				var shapeType = 3;
				var xPoint = xPointValues.split(",");
				var yPoint = yPointValues.split(",");
	
				for ( var i in xPoint) {
					xPoint[i] = parseFloat(xPoint[i]);
					yPoint[i] = parseFloat(yPoint[i]);
				}
	
				var points = new Array(xPoint.length);
	
				for ( var i in xPoint) {
					points[i] = new OpenLayers.Geometry.Point(xPoint[i], yPoint[i]);
					points[i].transform(bngProjection, map.getProjectionObject());
				}
				var ring = new OpenLayers.Geometry.LinearRing(points);
				var geometry = new OpenLayers.Geometry.Polygon( [ ring ]);
				
				
				
				switch (mapType) {
					case 1: 
						var options = {
								/*fillColor: ((color!="white")?color:'transparent'),*/
								fillColor: color,
								fillOpacity: ((color!="white")?0.4:0.01),
								/*fillOpacity: 0.4,*/
								strokeColor: color,
								/*strokeColor: ((color!="white")?color:'transparent'),*/
								strokeOpacity: ((color!="white")?0.8:0.01),
								
								/*strokeOpacity: 0.8,*/
								strokeWidth: 1,
								label: '',
								fontSize: "16px",
								fontFamily: "Tahoma, Geneva, sans-serif",
								fontWeight: "bold",
								fontColor: "#222"
						}; 
						break;
					case 2: var options = {
								fillColor: color,
								fillOpacity: 0,
								strokeColor: fontColor,
								strokeOpacity: 0.8,
								strokeWidth: 4,
								label: "",
								fontSize: "16px",
								fontFamily: "Tahoma, Geneva, sans-serif",
								fontWeight: "bold",
								fontColor: "#222"
						};
						break;
					case 3: 
						var options = {
								fillColor: color,
								fillOpacity: 0.4,
								strokeColor: color,
								strokeOpacity: 0.8,
								strokeWidth: 1,
								label: isTitleVisible(from,to)?label:'',
								fontSize: fontSize,
								fontFamily: "Tahoma, Geneva, sans-serif",
								fontWeight: "bold",
								fontColor: fontColor
						};
						break;
					case 4: 
						var options = {
								fillColor: color,
								fillOpacity: 0.4,
								strokeColor: color,
								strokeOpacity: 0.8,
								strokeWidth: 1,
								label: "",
								fontSize: "16px",
								fontFamily: "Tahoma, Geneva, sans-serif",
								fontWeight: "bold",
								fontColor: "#222"
						}; 
						break;
				}
				var feature = new OpenLayers.Feature.Vector(geometry,null,options);
				layer.addFeatures( [ feature ]);
				feature.attributes.shapeType = shapeType;
				feature.attributes.regionId = region;
				feature.attributes.url = url;
				feature.attributes.regionColor = color;
				feature.attributes.regionName = label;
				if (mapType == 3) {
					feature.attributes.fontSize = fontSize;
					feature.attributes.from = from;
					feature.attributes.to = to;
				}
				return (layer.features.length > 0);
			}
			
			function hoverOn(e) {
	//			e.feature.style.fillColor = "white";
				e.feature.style.label = e.feature.attributes.regionName;
				e.feature.style.fillOpacity = 0.2;
				if (e.feature.attributes.regionColor == "white") {
					/*e.feature.style.fillColor = "white";*/
					e.feature.style.fillOpacity = 0.4;
				}
				
			};
			function hoverOff(e) {
				e.feature.style.fillColor = e.feature.attributes.regionColor;
				e.feature.style.fillOpacity = 0.4;
				
				if (isOneMap) {
					if (!isTitleVisible(e.feature.attributes.from, e.feature.attributes.to)) {
						e.feature.style.label = "";
					}
				} else {
					e.feature.style.label = "";
					if (e.feature.attributes.regionColor == "white") { 
						/*e.feature.style.fillColor = "transparent";*/
						e.feature.style.fillOpacity = 0.02;
					}
				}
			};
			
			function mapEvent(event) {
				if (isOneMap) {
					for ( var i in vectors.features) {
						if (isTitleVisible(vectors.features[i].attributes.from, vectors.features[i].attributes.to)) {
							vectors.features[i].style.label = vectors.features[i].attributes.regionName;
						} else {
							vectors.features[i].style.label = "";
						} 
					}
				}
			}
	
			function isTitleVisible(from, to) {
				return (from <= map.zoom && map.zoom <= to);
			}
		
		}
		
		
	})
}

;

