
   var debug = false;
   var isManager = true;
   var localhost = false;
   var center_lat = 0.000000;
   var center_lon = 0.000000;
   var map_width = 600;
   var map_height = 400;
   var init_zoom = 1;
   var map_div_id = 'map_coml_mv';
   var mapfile = 'cmarz.map';
   var gm_api_key = 'ABQIAAAAX_4nl6m1FNTXu8-3Un235RTqQk7ykvVfDDvCAfcKXHI3K580vBT4XhUbg1u-eOQk1N80VvrB_BWk7Q';
   var kml_url = '';
   var map_enable_identify = false;

var map;
var kmlOverlay;
var gSeamapLayerOpacity = 1.0;

var gUrlMapserver = "http://seamap.env.duke.edu/cgi-bin/mapserv";
if (debug) {
  var gRootUrl = 'http://seamap.env.duke.edu:8888/dev/';
} else {
  var gRootUrl = 'http://seamap.env.duke.edu/prod/';
}

if (typeof(MooTools) != 'undefined') {
  var prototype = false;
} else{
  var prototype = true;
}

var gMapProcessUrl = gRootUrl + "services/coml/map_processes.php";

var map_path_level1 = "/var/www/dev/services/coml/maps/" + mapfile;
var map_path_level2 = map_path_level1;

var gMaxWidth = map_width - 100;

function loadMap() {
  if (GBrowserIsCompatible()) {
	if (map_enable_identify) {
		var map_options = {draggableCursor:"default"};
	} else {
		var map_options = {};
	}

    adjust_map_size(map_width, map_height);
    map = new GMap2(document.getElementById(map_div_id), map_options);
    map.addControl(new GLargeMapControl());
    map.addControl(new GMapTypeControl());
    map.setCenter(new GLatLng(center_lat, center_lon), init_zoom, G_SATELLITE_MAP);

	// GCopyright doesn't matter unless the overlay is added to the map as a new maptype.
	var copyright = new GCopyright(1,
	   new GLatLngBounds(new GLatLng(23,122),new GLatLng(46,151) ),
	    1, "OBIS-SEAMAP");

	var copyrightCollection = new GCopyrightCollection('COML');
	copyrightCollection.addCopyright(copyright);

	var myTileLayer = new GTileLayer(copyrightCollection, 1, 16);
	myTileLayer.getTileUrl = myGetTileUrl;
	myTileLayer.getOpacity = function() { return gSeamapLayerOpacity; }
	myTileLayer.isPng = function() { return true; }

	var myTileOverlay = new GTileLayerOverlay(myTileLayer);

	map.addOverlay(myTileOverlay);

	if (map_enable_identify) {
		GEvent.addListener(map, "click", on_click_identify);
	}
	
	if (kml_url != '') {
		kmlOverlay = new GGeoXml(kml_url);
		map.addOverlay(kmlOverlay);
	}
  }
}

function loadScript() {
    if (prototype) {
	var script = document.createElement("script");
	script.type = "text/javascript";
	script.src = gRootUrl + "common/prototype.js";
	document.body.appendChild(script);
    }
	var script = document.createElement("script");
	script.type = "text/javascript";
	script.src = "http://maps.google.com/maps?file=api&v=2.x&key=" + gm_api_key + "&async=2&callback=loadMap";
	document.body.appendChild(script);
}

function adjust_map_size(map_width, map_height) {
    if (prototype) {
	var map_div = $(map_div_id);
	map_div.setStyle({width: map_width + "px", height: map_height + "px"});
    } else {
	var map_div = document.getElementById(map_div_id);
	map_div.style.width = map_width + "px";
        map_div.style.height = map_height + "px";
    }
	/* Relocate Please wait div
	$('please_wait').setStyle({
		left: (Position.cumulativeOffset(map_div)[0] + parseInt(map_width / 2) - 103) + "px",
		top: (Position.cumulativeOffset(map_div)[1] + parseInt(map_height / 2) - 18) + "px"
	});
        */
	// Height of Legend
	//$('legend_content').setStyle({height: map_height + "px"});
}

/***** Mapserver layer definition *****/
// Return URL to get a tile image from Mapserver.
function myGetTileUrl(tile, zoom) {

    // max zoom plus 1
    var projection = new GMercatorProjection(18);

    // Four vertices location in pixcel in GPoint coordinates
    var p1 = new GPoint(tile.x*256,tile.y*256);
    var p2 = new GPoint(p1.x+256,p1.y+256);

    // latitude/longitude of four vertices location in decimal degree
    var latlng1 = projection.fromPixelToLatLng(p1,zoom);
    var latlng2 = projection.fromPixelToLatLng(p2,zoom);

    var lat1 = latlng1.lat();
    var lon1 = latlng1.lng();
    var lat2 = latlng2.lat();
    var lon2 = latlng2.lng();

    // binding box for mapserver
    var minlat = Math.min(lat1,lat2);
    var minlon = Math.min(lon1,lon2);
    var maxlat = Math.max(lat1,lat2);
    var maxlon = Math.max(lon1,lon2);
	var bbox = minlon + "," + minlat + "," + maxlon + "," + maxlat;

	var mapext = minlon + "+" + minlat + "+" + maxlon + "+" + maxlat;

	if (zoom > 1) {
		var url = gUrlMapserver + "?map=" + map_path_level2;
	} else {
		var url = gUrlMapserver + "?map=" + map_path_level1;
	}

	var mapserver_request = url + "&mode=map&mapsize=256+256";
	mapserver_request += "&mapext=" + mapext;

	// Add random parameter, so the image is not cached by browser
	//var random_parm = (new Date()).format('mmddyyyyhhnnss');
    //return mapserver_request + "&" + random_parm;
    return mapserver_request;
}


/***** Identeify start *****/
function on_click_identify(overlay, point) {
	// GM's default polygon click passes point as undefined, so ignore the event.
	// Custom polygon click event listener passes both overlay and point.
	if (overlay && typeof(point) == 'undefined') {
		return false;
	}

	//$('please_wait').show();
	gClickedPoint = point;
	var lat = point.lat();
	var lon = point.lng();
	var parameters = "mode=identify&latitude=" + lat + "&longitude=" + lon;

	var script = document.createElement("script");
	script.type = "text/javascript";
	script.src = gMapProcessUrl + "?" + parameters + "&111";
	document.body.appendChild(script);
	document.body.removeChild(script);
}

/***** Identeify end *****/
