
<!--
function Map(name, form)
{

	this.name		= name;
	this.form		= form;

	this.csgi		= new CSGI(form, name);

	this.click_mode	= "none";


	Map.prototype.pan			= Map_pan;
	Map.prototype.centerMap		= Map_centerMap;
	Map.prototype.zoomFeature	= Map_zoomFeature;
	Map.prototype.featureInfo	= Map_featureInfo;
	Map.prototype.setExtent		= Map_setExtent;
	Map.prototype.setSize		= Map_setSize;
	Map.prototype.click			= Map_click;
	Map.prototype.setZoomMode	= Map_setZoomMode;
	Map.prototype.setQueryMode	= Map_setQueryMode;

	Map.prototype.editKey		= Map_editKey;
	Map.prototype.updateKey		= Map_updateKey;
	Map.prototype.queryMetadata	= Map_queryMetadata;

	Map.prototype.csMode		= Map_csMode;
	Map.prototype.ssMode		= Map_ssMode;

	Map.prototype.setFilter		= Map_setFilter;
}


function Map_setZoomMode()
{
	var		element;

	this.click_mode = "zoom";

	if(this.csgi_map != null)
	{
		if((element = elementByName(this.csgi_map, this.csgi_object + ".clickpoint.action")) != null)
			element.value = this.click_mode;

		this.csgi_map.target = "_self";
	}
}

function Map_setQueryMode()
{
	var		element;

	this.click_mode = "query";

	if(this.csgi_map != null)
	{
		if((element = elementByName(this.csgi_map, this.csgi_object + ".clickpoint.action")) != null)
			element.value = this.click_mode;

		this.csgi_map.target = "query";
	}
}


function Map_click(name, href)
{
	if(this.click_mode == "zoom")
	{
		//alert("Zoom to feature '" + name + "'");

		this.setExtent();
	}
	else if(this.click_mode == "query")
	{
		//alert("Query feature '" + name + "'");

		if(href != null)
		{
			query_window = window.open(href, 'query_window', 'toolbar=no,location=no,width=400,height=200')
			query_window.focus();
		}
	}
}


function Map_pan(dx, dy)
{
	var		dir, step;

	if((dx != null) && ((dir = dx.indexOf("#")) != -1))
	{
		dir = dx.substring(dir + 1, dx.length);

		if(dy != null)
			step = dy
		else
			step = "80";

		this.csgi.pan(dir, step);
	}
	else if((dx != null) && (dy != null))
	{
		// Ready to pan, in direction/step dx, dy

		this.csgi.pan(dx, dy);
	}
	else
	{
		alert("Map_pan(): Bad request (" + dx + "," + dy + ")\n");
		return;
	}

	this.csgi.submit();
}

function Map_centerMap(csgi, factor, xpt, ypt)
{
	if(csgi == null)
		csgi = this.csgi;

	if((factor.indexOf(":") != -1) && (factor.indexOf("x") != -1))
	{
		alert("Map_zoom(): Bad request (" + factor + ")\n");
		return;
	}

	csgi.centerMap(factor, xpt, ypt);
	//csgi.submit();
}

function Map_zoomFeature(csgi)
{
	if(csgi == null)
		csgi = this.csgi;

	csgi.zoomFeature();
}

function Map_featureInfo(csgi)
{
	if(csgi == null)
		csgi = this.csgi;

	csgi.featureInfo();
}

function Map_zoomPoint(form, factor, point)
{
	if((factor.indexOf(":") != -1) && (factor.indexOf("x") != -1))
	{
		alert("Map_zoom(): Bad request (" + factor + ")\n");
		return;
	}

	form.action.value		= "zoompoint";
	form.zoompoint.value	= factor;
	form.zoompoint.value	= factor;

	alert("Map_zoom(): " + this.form.action.value + " with " + this.form.zoom.value);
	//this.form.submit();
}


function mapByName(name)
{
	var		map;

	if((map = this[name]) == null)
		alert("Map '" + name + "' not found!");

	return(map);
}


function selectFeature(form, region)
{
	var		radio, item;

	for(item = 0; item < form.select_action.length; item++)
	{
		radio = form.select_action[item];

		if(!radio.checked)
			continue;

		if(radio.value == 'zoom')
		{
			form.action.value		= "select_region";
			form.region.value		= region;
			alert("Zoom to " + region);
			return;
		}
		else if(radio.value == 'query')
		{
			query = window.open('query/' + region + '.html', '', 'toolbar=no,width=300,height=50');
			query.focus();
			return;
		}
	}
}


function Map_updateKey(edit_legend)
{
	var		layer_element, symbol_element, method_element, name_element;

	if(this.csgi == null)
	{
		alert("CSGI object not defined!");
		return;
	}

	this.csgi.target("_self");

/*
	method_element	= elementByName(this.csgi.form, "icmiss" + ".method");
	layer_element	= elementByName(this.csgi.form, "icmiss" + ".updatekey.layer");
	symbol_element	= elementByName(this.csgi.form, "icmiss" + ".updatekey.symbol");
	display_element	= elementByName(this.csgi.form, "icmiss" + ".updatekey.display");
	filter_element	= elementByName(this.csgi.form, "icmiss" + ".updatekey.filter");
	name_element	= elementByName(this.csgi.form, "icmiss" + ".updatekey.name");

	if((method_element.value == null) || (method_element.value == ""))
		method_element.value = "updatekey";
	else
		method_element.value = method_element.value + "," + "updatekey";

	layer_element.value		= edit_legend.layer;
	symbol_element.value	= edit_legend.image;
	display_element.value	= edit_legend.display;
	filter_element.value	= edit_legend.filter;
	name_element.value		= edit_legend.label;

	//alert("submit");

*/

	this.csgi.updateKey(edit_legend.layer, edit_legend.image, edit_legend.display, edit_legend.filter, edit_legend.label);

	this.csgi.submit();
}


function Map_setExtent(x1, y1, x2, y2)
{
	var		layer_element, symbol_element, method_element;

	//alert("setExtent");

	if(this.csgi == null)
	{
		alert("CSGI object not defined!");
		return;
	}

	this.csgi.target("_self");
	this.csgi.setExtent(x1, y1, x2, y2);
	this.csgi.submit();
}

function Map_setSize(w, h)
{

	if(this.csgi == null)
	{
		alert("CSGI object not defined!");
		return;
	}

	this.csgi.target("_self");

	this.csgi.setSize(w,h);

	this.csgi.submit();
}

function addLegend(edit_legend)
{
	var		layer_element, symbol_element, method_element;

	alert("addLegend(): Adding layers '" + edit_legend.layer + "' + '" + edit_legend.layer_imgs + "'");

	if(document.csgi == null)
	{
		alert("CSGI object not defined!");
		return;
	}

	method_element	= elementByName(document.csgi, "icmiss" + ".method");
	layer_element	= elementByName(document.csgi, "icmiss" + ".updatekey.layer");
	symbol_element	= elementByName(document.csgi, "icmiss" + ".updatekey.symbol");

	if((method_element.value == null) || (method_element.value == ""))
		method_element.value = "updatekey";
	else
		method_element.value = method_element.value + "," + "updatekey";

	layer_element.value		= document.form.layers.value + "," + edit_legend.layer;
	symbol_element.value	= document.form.layer_imgs.value;

	document.csgi.submit();
}


function Map_editKey(key_window)
{
	var		layers;
	var		element;


	if(this.csgi == null)
	{
		alert("CSGI object not defined!");
		return;
	}

	key_window.map = this;

	this.csgi.editKey();
	this.csgi.submit();
}


function Map_queryMetadata(meta_window)
{
	var		layers;
	var		element;

	if(this.csgi == null)
	{
		alert("CSGI object not defined!");
		return;
	}

	meta_window.map = this;

	this.csgi.queryMetadata();
	this.csgi.submit();
}


function queryLegend(form, name)
{
	//query_legend = window.open('/cgi-bin/demos/query.pl?action=filter&legend=' + name + '&layers=$LAYERS$', 'query_legend', 'toolbar=no,location=yes,width=450,height=400,resizable=yes,scrollbars=yes');
	query_legend = window.open('/cgi-bin/demos/icmiss.pl?session=$SESSION$&object=query&query.method=metaquerytool', 'query_legend', 'toolbar=no,location=yes,width=450,height=400,resizable=yes,scrollbars=yes');

	query_legend.map_window		= this;
	query_legend.legend_form	= form;
	query_legend.callback		= this;

	query_legend.focus();
}

function selectLegend(form, name)
{
	select_legend = window.open('/cgi-bin/demos/query.pl?action=query&legend=' + name + '&layers=$LAYERS$', 'query_legend', 'toolbar=no,location=yes,width=450,height=400,resizable=yes,scrollbars=yes');

	select_legend.map_window	= this.map_window;
	select_legend.legend_form	= this.form;
	select_legend.callback		= this.callback;

	select_legend.focus();

	this.close();
}

function Map_csMode(layer)
{
	if(this.csgi == null)
	{
		alert("CSGI object not defined!");
		return;
	}

	//alert("csMode - " + layer);
	this.csgi.csMode(layer);
	this.csgi.submit();
}

function Map_ssMode(layer)
{
	if(this.csgi == null)
	{
		alert("CSGI object not defined!");
		return;
	}

	//alert("ssMode");
	this.csgi.ssMode();
	this.csgi.submit();
}

function Map_setFilter(layer, name, mode, value)
{
	if(this.csgi == null)
	{
		alert("CSGI object not defined!");
		return;
	}

	//alert("ssMode");
	this.csgi.updateFilterLayer(layer, name, mode, value);
	this.csgi.submit();
}

function trapReturn()
{
	alert("Trap Return");
}
//-->

