var activateOMap = function(){
	/*
	 * Add all openLayers code within this function.
	 * Do not add inline javascript, or css to php file.
	 * There is no need for the defer attribute in the
	 * script tag, the above event 'domready' is a much
	 * cleaner way of doing it.
	 */
	var map = new OpenLayers.Map(	// set to GMRT SP bounds
	'mapclient',
	{
	 maxExtent: new OpenLayers.Bounds(-8207248,-8207248,8207248,8207248),
	 maxResolution: 'auto',
	 units: 'm',
	 projection: 'EPSG:3031'
	});

	var gmrt = new OpenLayers.Layer.MapServer(
		"GMRT Topography",
		"http://www.marine-geo.org/exe/mapserv?",
		{
//		map: '/system/link/server/apache/htdocs/marine-geo/map/usap/wms.map',
//		layers: 'GMRT'
		map: '/system/link/server/apache/htdocs/marine-geo/map/wms_SP.map',
		layers: 'South_Polar_Bathymetry'
		});
	map.addLayer(gmrt);

	var gmrtmask = new OpenLayers.Layer.MapServer(
		"GMRT Topography-Mask",
		"http://www.marine-geo.org/exe/mapserv?",
		{
		map: '/system/link/server/apache/htdocs/marine-geo/map/wms_SP_mask.map',
		layers: 'South_Polar_Bathymetry'
		});
	map.addLayer(gmrtmask);

//	var lima = new OpenLayers.Layer.MapServer(
//		"Landsat Mosaic (LIMA)",
//		"http://dev.agic.umn.edu/cgi-bin/mapserv?",
//		{
//		map: '/raid/agic/www/lima/wms.map',
//		layers: 'mosaic_30-1'
//		});
//	map.addLayer(lima);

	var modis = new OpenLayers.Layer.MapServer(
		"MODIS Mosaic",
		"http://www.marine-geo.org/exe/mapserv?",
		{
		map: '/system/link/server/apache/htdocs/marine-geo/map/usap/wms.map',
		layers: 'MODIS'
		});
	map.addLayer(modis);

	var scar = new OpenLayers.Layer.MapServer(
		"SCAR Coastlines",
		"http://nsidc.org/cgi-bin/mapserv?",
		{
		map: '/WEB/INTERNET/MMS/atlas/epsg3031_grids.map',
		layers: 'land'
		});
	map.addLayer(scar);

//	var stations = new OpenLayers.Layer.MapServer(
//		"Palmer & Gould Stations",
//		"http://www.marine-geo.org/exe/mapserv?",
//		{
//		map: '/system/link/server/apache/htdocs/marine-geo/map/wmsextSP.map',
//		layers: 'Stations-WorldSP',
//		transparent: true
//		});
//	stations.setVisibility(false);
//	map.addLayer(stations);

//	var samples = new OpenLayers.Layer.MapServer(
//		"Palmer & Gould Samples",
//		"http://www.marine-geo.org/exe/mapserv?",
//		{
//		map: '/system/link/server/apache/htdocs/marine-geo/map/wmsextSP.map',
//		layers: 'Samples-WorldSP',
//		transparent: true
//		});
//	samples.setVisibility(false);
//	map.addLayer(samples);
	
	var tracks = new OpenLayers.Layer.MapServer(
		"Palmer & Gould Tracks",
		"http://www.marine-geo.org/exe/mapserv?",
		{
		map: '/system/link/server/apache/htdocs/marine-geo/map/wmscontrolpoints.map',
		layers: 'Tracks',
		transparent: true
		});
		tracks.setVisibility(true);
		map.addLayer(tracks);

		map.addControl(new OpenLayers.Control.LayerSwitcher());
		map.setBaseLayer(gmrt);
		map.setCenter(new OpenLayers.LonLat(0,0), 1);
//    map.zoomToMaxExtent();
		map.zoomToExtent(new OpenLayers.Bounds(-4103624,-4103624,4103624,4103624));
		//map.addControl(new OpenLayers.Control.MousePosition());

		map.events.register('click', map, function (e) {
				var tolerance = new OpenLayers.Pixel(7, 7);
				var min_px = new OpenLayers.Pixel(e.xy.x - tolerance.x, e.xy.y + tolerance.y);
				var max_px = new OpenLayers.Pixel(e.xy.x + tolerance.x, e.xy.y - tolerance.y);
				var min_ll = map.getLonLatFromPixel(min_px);
				var max_ll = map.getLonLatFromPixel(max_px);
				
				for (var i = 0; i < map.popups.length; i++) {
					map.removePopup(map.popups[i]);
				}

		var feature;
		if (stations.visibility && samples.visibility)
			feature = 'AllSP';
		else if (stations.visibility)
			feature = 'StationsSP';
		else if (samples.visibility)
			feature = 'SamplesSP';
		else
			feature = 'NoShow';

		if (tracks.visibility) {
//			url = 'http://www.marine-geo.org/exe/mapserv?map=/system/link/server/apache/htdocs/marine-geo/map/wmsant.map&version=1.1.1&service=WMS&request=GetFeatureInfo&layers=Tracks&query_layers=Tracks&srs=EPSG:3031&transparent=TRUE&exceptions=application%2Fvnd.ogc.se_xml&feature_count=1&styles=default&width=7&height=7&x=3.5&y=3.5&radius=7&INFO_FORMAT=application/vnd.ogc.gml&bbox='+min_ll.lon+','+min_ll.lat+','+max_ll.lon+','+max_ll.lat;
			url = 'http://www.marine-geo.org/exe/mapserv?map=/system/link/server/apache/htdocs/marine-geo/map/wmsant.map&version=1.1.1&service=WMS&request=GetFeatureInfo&layers=Tracks&query_layers=Tracks&srs=EPSG:3031&transparent=TRUE&exceptions=application%2Fvnd.ogc.se_xml&feature_count=1&styles=default&width=7&height=7&x=3.5&y=3.5&radius=7&INFO_FORMAT=text/plain&bbox='+min_ll.lon+','+min_ll.lat+','+max_ll.lon+','+max_ll.lat;
			OpenLayers.ProxyHost = '';
			OpenLayers.loadURL(url, '', map, function(response) {
				if (response.responseText.indexOf('no results') == -1) {
					var content; 
					content = '<p id=target style=font-size:.8em;>';
					popup_length = 6;
					var lines = response.responseText.split('\n');
					entry = lines[2].replace("Layer '","").replace("_anno","").replace("'","");
					content += 'Entry ID: <a target=_new href="http://www.marine-geo.org/tools/search/entry.php?id='+entry+'">' + entry + '</a><br />';
					var httpRequest;
					var type = arguments[0];  // get type of call
					if (window.XMLHttpRequest) { // Mozilla, Safari, ...
						httpRequest = new XMLHttpRequest();
						if (httpRequest.overrideMimeType) {
							httpRequest.overrideMimeType('text/xml');
						}
					}
					else if (window.ActiveXObject) { // IE
						try {
							httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
							}
						catch (e) {
							try {
									httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
							}
							catch (e) {}
						}
					}
					var data = "id="+entry;
					httpRequest.open('POST', '../entry.php', true);
					httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
					httpRequest.onreadystatechange = function()
						{
							if (httpRequest.readyState == 4)
							{
								if (httpRequest.status == 200)
								{
									document.getElementById("target").innerHTML += httpRequest.responseText;
								}
							}
						};
					httpRequest.send(data);
					
					content += '</p>';
					if (/MSIE/.test(navigator.userAgent))
						var popup_ht = 24+popup_length*16;
					else if (/Windows/.test(navigator.userAgent) || /Mozilla/.test(navigator.userAgent))
						var popup_ht = 24+popup_length*16;
					else
						var popup_ht = 24+popup_length*12;
					var popup = new OpenLayers.Popup(
						"popup",
						new OpenLayers.LonLat(max_ll.lon,max_ll.lat),
						new OpenLayers.Size(250,popup_ht),
						content,
						true);        
					map.addPopup(popup);					
				}
			});
		}
					
//	alert("feature = " + feature);
		if (feature != 'NoShow' && !tracks.visibility) {
			if (feature == 'AllSP')
				url = 'http://www.marine-geo.org/exe/mapserv?map=/system/link/server/apache/htdocs/marine-geo/map/wfsSP.map&service=WFS&version=1.0.0&request=GetFeature&typename=SamplesSP&srs=EPSG:3031&bbox='+min_ll.lon+','+min_ll.lat+','+max_ll.lon+','+max_ll.lat;
			else
				url = 'http://www.marine-geo.org/exe/mapserv?map=/system/link/server/apache/htdocs/marine-geo/map/wfsSP.map&service=WFS&version=1.0.0&request=GetFeature&typename='+feature+'&srs=EPSG:3031&bbox='+min_ll.lon+','+min_ll.lat+','+max_ll.lon+','+max_ll.lat;
			OpenLayers.ProxyHost = '';
			OpenLayers.loadURL(url, '', map, function(response) {
				var doc = response.responseXML;
				var nodes =  OpenLayers.Util.getNodes(doc, "gml:featureMember");
				if(nodes.length>=1) {
					if (feature == 'AllSP')
						feature = 'SamplesSP';
						var content; 
						content = '<p style=font-size:.8em;>';
		/*	    	for (var i = 0; i < nodes.length; i++) {
											var node = OpenLayers.Util.getNodes(nodes[i], "ms:"+feature)[0];
											var url = OpenLayers.Util.getTagText(node, "ms:gis_url");
											var entry = OpenLayers.Util.getTagText(node, "ms:entry_id");
											var name = OpenLayers.Util.getTagText(node, "ms:station_name").substring(0,20);
											content += 'Entry ID: <a target=_new href="http://www.marine-geo.org/tools/search/entry.php?id='+entry+'">' + entry + '</a> Name: <a target=_new href="'+url+'">' + name + '</a><br />';
									}
		*/
						popup_length = 5;
						var node = OpenLayers.Util.getNodes(nodes[0], "ms:"+feature)[0];
						var url = OpenLayers.Util.getTagText(node, "ms:gis_url");
						var entry = OpenLayers.Util.getTagText(node, "ms:entry_id");
						if (feature == 'StationsSP') {
							var name = OpenLayers.Util.getTagText(node, "ms:station_name");
							var type = OpenLayers.Util.getTagText(node, "ms:event_type");
							var investigator = OpenLayers.Util.getTagText(node, "ms:investigator_person_id");
						}
						else {
							var name = OpenLayers.Util.getTagText(node, "ms:sample_name");
							var type = OpenLayers.Util.getTagText(node, "ms:data_type").substring(7,50);
							var investigator = OpenLayers.Util.getTagText(node, "ms:person_id");
						}
						
						content += 'Entry ID: <a target=_new href="http://www.marine-geo.org/tools/search/entry.php?id='+entry+'">' + entry + '</a><br />';
						if (feature == 'StationsSP')
							content += 'Station';
						else
							content += 'Sample';
						content += ' Name: <a target=_new href="'+url+'">' + name + '</a><br />';
						if (feature == 'StationsSP')
							content += 'Station';
						else
							content += 'Sample';
						content += ' Type: ' + type + '<br />';
						content += 'Investigator: ' + investigator + '<br />';
						content += '</p>';

						if (/MSIE/.test(navigator.userAgent))
							var popup_ht = 15+popup_length*15;
						else if (/Windows/.test(navigator.userAgent) || /Mozilla/.test(navigator.userAgent))
							var popup_ht = 24+popup_length*16;
						else
							var popup_ht = 24+popup_length*12;
						var popup = new OpenLayers.Popup(
							"popup",
							new OpenLayers.LonLat(max_ll.lon,max_ll.lat),
							new OpenLayers.Size(250,popup_ht),
							content,
							true);        
						map.addPopup(popup);
					}
					else if (feature == 'AllSP') {
						feature = 'StationsSP';
						url = 'http://www.marine-geo.org/exe/mapserv?map=/system/link/server/apache/htdocs/marine-geo/map/wfsSP.map&service=WFS&version=1.0.0&request=GetFeature&typename='+feature+'&srs=EPSG:3031&bbox='+min_ll.lon+','+min_ll.lat+','+max_ll.lon+','+max_ll.lat;
						OpenLayers.ProxyHost = '';
						OpenLayers.loadURL(url, '', map, function(response) {
							var doc = response.responseXML;
							var nodes =  OpenLayers.Util.getNodes(doc, "gml:featureMember");
							if(nodes.length>=1) {
								var content; 
								content = '<p style=font-size:.8em;>';
								popup_length = 5;
								var node = OpenLayers.Util.getNodes(nodes[0], "ms:"+feature)[0];
								var url = OpenLayers.Util.getTagText(node, "ms:gis_url");
								var entry = OpenLayers.Util.getTagText(node, "ms:entry_id");
								if (feature == 'StationsSP') {
									var name = OpenLayers.Util.getTagText(node, "ms:station_name");
									var type = OpenLayers.Util.getTagText(node, "ms:event_type");
									var investigator = OpenLayers.Util.getTagText(node, "ms:investigator_person_id");
								}
								else {
									var name = OpenLayers.Util.getTagText(node, "ms:sample_name");
									var type = OpenLayers.Util.getTagText(node, "ms:data_type").substring(7,50);
									var investigator = OpenLayers.Util.getTagText(node, "ms:person_id");
								}
								
								content += 'Entry ID: <a target=_new href="http://www.marine-geo.org/tools/search/entry.php?id='+entry+'">' + entry + '</a><br />';
								if (feature == 'StationsSP')
									content += 'Station';
								else
									content += 'Sample';
								content += ' Name: <a target=_new href="'+url+'">' + name + '</a><br />';
								if (feature == 'StationsSP')
									content += 'Station';
								else
									content += 'Sample';
								content += ' Type: ' + type + '<br />';
								content += 'Investigator: ' + investigator + '<br />';
								content += '</p>';

								if (/MSIE/.test(navigator.userAgent))
									var popup_ht = 15+popup_length*15;
								else if (/Windows/.test(navigator.userAgent) || /Mozilla/.test(navigator.userAgent))
									var popup_ht = 24+popup_length*16;
								else
									var popup_ht = 24+popup_length*12;
								var popup = new OpenLayers.Popup(
									"popup",
									new OpenLayers.LonLat(max_ll.lon,max_ll.lat),
									new OpenLayers.Size(250,popup_ht),
									content,
									true);        
								map.addPopup(popup);
							}
						});
					}
				});
			}
		});
//    map.events.register(
//	"click",
//	map,
//	function(e) { 
//		var lonlat = map.getLonLatFromViewPortPx(e.xy);
//		alert("You clicked near " + lonlat.lat + " N, " + lonlat.lon + " E");
//	});
}
