/* mapheading.js: script for map operations */
var objectUTMs		= '';
var objectLabels	= '';
var objectLinks		= '';
var objectClasses	= '';
var objectYears		= '';

var objectIdx	= 0;

var objectUTMsArray		= new Array();
var objectLabelsArray		= new Array();
var objectLinksArray		= new Array();
var objectClassesArray		= new Array();
var objectYearsArray		= new Array();
var objectCoordTypesArray	= new Array();

// in the initial listing of sites, addSiteToList is called for each site; an input
// checkbox is also defined that calls either addSite or removeSite when the checkbox
// is checked or unchecked

function addSiteToList()
{
	objectUTMsArray[	objectIdx ] = '';
	objectLabelsArray[	objectIdx ] = '';
	objectLinksArray[	objectIdx ] = '';
	objectYearsArray[	objectIdx ] = '';
	objectClassesArray[	objectIdx ] = '';
	objectCoordTypesArray[	objectIdx ] = '';
	++objectIdx;
}

function addSite( sitenum, utm, label, link, year )
{
	if ( addSite.arguments.length > 5 )
	{
		theClass = addSite.arguments[ 5 ];
	}
	else
	{
		theClass = 'samplingsite';
	}
	--sitenum
	objectUTMsArray[	sitenum ] = utm;
	objectLabelsArray[	sitenum ] = label;
	objectLinksArray[	sitenum ] = link;
	objectYearsArray[	sitenum ] = year;
	objectClassesArray[	sitenum ] = theClass;
	objectCoordTypesArray[	sitenum ] = '';
}

function removeSite( sitenum )
{
	--sitenum
	objectUTMsArray[	sitenum ] = '';
	objectLabelsArray[	sitenum ] = '';
	objectLinksArray[	sitenum ] = '';
	objectYearsArray[	sitenum ] = '';
	objectClassesArray[	sitenum ] = '';
	objectCoordTypesArray[	sitenum ] = '';
}

function selectAllCheckBoxes()
{
	var theCheckbox;

	var c = document.getElementsByName( "CheckAll" )[0].value;
	var theLink = document.getElementById( "selectAllLink" );
	if ( c == "false" )
	{
		bolCheck = 1
		document.getElementsByName( "CheckAll" )[0].value = "true";
		theLink.firstChild.data = "Deselect all results";
	}
	else
	{
		bolCheck = 0
		document.getElementsByName( "CheckAll" )[0].value = "false";
		theLink.firstChild.data = "Select all results";
	}
	for ( i = 1; i <= objectIdx; ++i )
	{
		document.getElementsByName( "listingCheckbox" + i )[0].checked = bolCheck;
		document.getElementsByName( "listingCheckbox" + i )[0].onclick();
	}
}

function showCheckBoxImagesOnMap()
{
	var mappedObjectUTMsArrayString		= '';
	var mappedObjectLabelsArrayString	= '';
	var mappedObjectLinksArrayString	= '';
	var mappedObjectClassesArrayString	= '';
	var mappedObjectCoordTypesArrayString	= '';

	for( i = 0; i < objectUTMsArray.length; ++i )
	{
		if( objectUTMsArray[ i ] != '' )
		{
			mappedObjectUTMsArrayString	= mappedObjectUTMsArrayString    + objectUTMsArray[ i ]    + ';;';
			mappedObjectLabelsArrayString	= mappedObjectLabelsArrayString  + objectLabelsArray[ i ]  + ';;';
			mappedObjectLinksArrayString	= mappedObjectLinksArrayString   + objectLinksArray[ i ]   + ';;';
			mappedObjectClassesArrayString	= mappedObjectClassesArrayString + objectClassesArray[ i ] + ';;';
			mappedObjectCoordTypesArrayString = mappedObjectCoordTypesArrayString + objectCoordTypesArray[ i ] + ';;';
		}
	}

//	alert( 'mappedObjectUTMsArrayString = ' + mappedObjectUTMsArrayString );
//	alert( 'mappedObjectLabelsArrayString = ' + mappedObjectLabelsArrayString );
//	alert( 'mappedObjectLinksArrayString = ' + mappedObjectLinksArrayString );
//	alert( 'mappedObjectClassesArrayString = ' + mappedObjectClassesArrayString );
//	alert( 'mappedObjectCoordTypesArrayString = ' + mappedObjectCoordTypesArrayString );

	if ( typeof( newMapWindow ) == "undefined" )
	{
		var ifrm = document.getElementById( "ap_iframe" );
		ifrm.width = 540;
		ifrm.height = 480;
	}
	var warning = document.getElementById( "warning" );

	if ( typeof( draw_locations ) != "undefined" )
	{
		warning.style.visibility = "hidden";
		warning.style.position = "absolute";
		draw_locations( mappedObjectUTMsArrayString, mappedObjectLabelsArrayString, mappedObjectLinksArrayString, mappedObjectClassesArrayString, mappedObjectCoordTypesArrayString );
	}
	else
	{
		warning.style.position = "relative";
		warning.style.visibility = "visible";
	}
}

function showChart()
{
	var idlistString = '';

	for( i = 0; i < objectUTMsArray.length; ++i )
	{
		if( objectUTMsArray[ i ] != '' )
		{
			if( idlistString != '' )
			{
				idlistString = idlistString + ',';
			}
			idlistString = idlistString + '\'' + objectLabelsArray[ i ] + ',' + objectYearsArray[ i ] + '\'';
		}
	}
//	alert( 'idlistString = ' + idlistString );
	document.getElementsByName( "idlist" )[0].value = idlistString;
	document.getElementsByName( "chartForm" )[0].submit();
}

function addCheckBoxImage( utm, label, link )
{
	var width;
	var height;
	var file;

	width = 12;
	height = 12;
	file = "somefile.jpg";

	if (addCheckBoxImage.arguments.length > 3)
	{
		theClass = addCheckBoxImage.arguments[ 3 ];
	}
	else
	{
		theClass = 'samplingsite';
	}
	if (addCheckBoxImage.arguments.length > 4)
	{
		coordType = addCheckBoxImage.arguments[ 4 ];
	}
	else
	{
		coordType = '';
	}

	// replace all single-quotes with backslash single-quote in the label parameter...
	label = label.replace( /\'/g, "\\'" );

	document.write( "<input type=checkbox name=\"checkbox"+checkBoxCounter+"\" onclick=\"if(this.checked==true){addImageToArray("+checkBoxCounter+",'"+utm+"','"+file+"','"+width+"','"+height+"','"+label+"','"+link+"','"+theClass+"','"+coordType+"');}else{removeImageFromArray("+checkBoxCounter+");}\" />");

	mappedObjectUTMsArray[checkBoxCounter] = '';
	mappedObjectLabelsArray[checkBoxCounter] = '';
	mappedObjectLinksArray[checkBoxCounter] = '';
	mappedObjectClassesArray[checkBoxCounter] = '';
	mappedObjectCoordTypesArray[checkBoxCounter] = '';

	++checkBoxCounter;
}

function addImageToArray( index, utm, file, width, height, label, link, theClass, coordType )
{
	mappedObjectUTMsArray[index] = utm;
	mappedObjectLabelsArray[index] = label;
	mappedObjectLinksArray[index] = link;
	mappedObjectClassesArray[index] = theClass;
	mappedObjectCoordTypesArray[index] = coordType;
}

function removeImageFromArray( index )
{
	mappedObjectUTMsArray[index] = '';
	mappedObjectLabelsArray[index] = '';
	mappedObjectLinksArray[index] = '';
	mappedObjectClassesArray[index] = '';
	mappedObjectCoordTypesArray[index] = '';
}

function addObjectToMap( utm, label, link )
{
	if (addObjectToMap.arguments.length > 3)
	{
		theClass = addObjectToMap.arguments[ 3 ];
	}
	else
	{
		theClass = 'zoningCircle';
	}
	mappedObjectUTMs   = mappedObjectUTMs   + utm   + ';;';
	mappedObjectLabels = mappedObjectLabels + label + ';;';
	mappedObjectLinks  = mappedObjectLinks  + link + ';;';
	mappedObjectClasses  = mappedObjectClasses  + theClass + ';;';
}

function showLocationOnMap( utmx, utmy, hinttext )
{
	if (showLocationOnMap.arguments.length > 3)
	{
		theClass = showLocationOnMap.arguments[ 3 ];
	}
	else
	{
		theClass = 'zoningCircle';
	}

	var index;
	while ( ( index = hinttext.indexOf( "&" ) ) != -1 )
	{
		hinttext = hinttext.substring( 0, index ) + "%26" + hinttext.substring( index + 1, hinttext.length );
	}
	while ( ( index = hinttext.indexOf( "'" ) ) != -1 )
	{
		hinttext = hinttext.substring( 0, index ) + "%27" + hinttext.substring( index + 1, hinttext.length );
	}
	var ifrm = document.getElementById( "ap_iframe" );
	ifrm.width = 540;
	ifrm.height = 480;
	ifrm.onload = "";
	ifrm.src = "svg_map_php/map.php?appId=28&utm=" + utmx + "," + utmy + "&x=" + utmx + "&y=" + utmy +
		"&zoom=2&hinttext=" + hinttext + "&sr_formSend=true&myparent=true&theClass=" + theClass;
}

function showLocationsOnMap()
{
	var ifrm = document.getElementById( "ap_iframe" );
	var warning = document.getElementById( "warning" );
	ifrm.width = 540;
	ifrm.height = 480;

	// The drawing function is implemented in the SVG code, which
	// is loaded into an iframe;  thus, the following statement should
	// be included somewhere in the initialization sequence for that code:
	//   parent.draw_locations = name_of_some_implemented_function
	// The function takes three parameters: a list of UTM co-ordinates "utme,utmn",
	// a list of fly-over text labels and a list of URLs, where each
	// list is comprised of elements separated by two semi-colons
	// A warning is displayed if the SVG plug-in is not completely loaded
	// and the drawing function cannot be found yet.
	if ( typeof( draw_locations ) != "undefined" )
	{
		warning.style.visibility = "hidden";
		warning.style.position = "absolute";
		draw_locations( mappedObjectUTMs, mappedObjectLabels, mappedObjectLinks, mappedObjectClasses );
	}
	else
	{
		warning.style.position = "relative";
		warning.style.visibility = "visible";
	}
}

function updateForm(t, px, py, cx, cy, r, x1, x2, y1, y2)
{
	var frm;
	if ( document.getElementById )
	{
		frm = document.getElementById( "searchForm" );
	}
	else
	{
		frm = document.forms[ "searchForm" ];
	}
	if(frm == null) { frm = document.forms[ "searchForm" ]; }
	frm.searchType.value = t;
	frm.searchPointX.value = px;
	frm.searchPointY.value = py;
	frm.searchCenterX.value = cx;
	frm.searchCenterY.value = cy;
	frm.searchRadius.value = r;
	frm.X1.value = x1;
	frm.X2.value = x2;
	frm.Y1.value = y1;
	frm.Y2.value = y2;
}

// updateSVGx -- when an admin form for a water source is displayed, a map with
//               editable utmX and utmY fields is displayed;  utmX specifies
//               updateSVGx as an onchange="" function to pass the changed value
//               to the mapping subsystem

function updateSVGx( x )
{
	window.set_x( x );
}

function updateSVGy( y )
{
	window.set_y( y );
}
