var sCurrentRangeYear = "0";

var zoomFactor = 0.1;
var panFactor  = 0.1;

//Function to clear out the min/max X/Y values in the ToolForm
function clearXYCoords()
{
   var ToolForm = document.ToolForm;
	var MinX     = ToolForm.MinX;
	var MaxY     = ToolForm.MaxY;
	var MaxX     = ToolForm.MaxX;
	var MinY     = ToolForm.MinY;
	MinX.value   = '';
	MaxY.value   = '';
	MaxX.value   = '';
	MinY.value   = '';
}	

//Function to set the min/max X/Y values in the ToolForm
function setXYCoords(dNewMinX,dNewMaxY,dNewMaxX,dNewMinY)
{
	var ToolForm = document.ToolForm;
	var MinX     = ToolForm.MinX;
	var MaxY     = ToolForm.MaxY;
	var MaxX     = ToolForm.MaxX;
	var MinY     = ToolForm.MinY;
	MinX.value   = dNewMinX;
	MaxY.value   = dNewMaxY;
	MaxX.value   = dNewMaxX;
	MinY.value   = dNewMinY;
}	

//ResetToolForm - This function sets the values for fields in the hidden form Tool Form equal to the values
// in the pages URL. This is to reset the values in case the user drills down to a state, hits the back 
// button and then tries to zoom from the previous map. Without this fix it would zoom to the drill-down map.
//This function needs to be called in all zoom and pan functions.
// No actions are taken if the URL is missing. Not sure how this would happen anyways.
function ResetToolForm()
{
	var UserForm       = document.UserForm;
	var ToolForm		 = document.ToolForm;

	var sAddressString = '"' + document.location + '"';
	var sSubString     = "";
	var aURLValues;
	if	(sAddressString.indexOf("?") != -1)
		{
		if	(sAddressString.indexOf("#map") != -1)
			sSubString = sAddressString.substring(sAddressString.indexOf("?")+1,sAddressString.indexOf("#map"));
		else
			sSubString = sAddressString.substr(sAddressString.indexOf("?")+1);
		aURLValues = sSubString.split("&");
		if(ToolForm.GeoAreaBox.value       != aURLValues[0])
			ToolForm.GeoAreaBox.value        = aURLValues[0];
		if(ToolForm.AgeBox.value           != aURLValues[1])
			ToolForm.AgeBox.value            = aURLValues[1];
		if(ToolForm.CancerBox.value        != aURLValues[2])
			ToolForm.CancerBox.value         = aURLValues[2];
		if(ToolForm.RaceBox.value          != aURLValues[3])
			ToolForm.RaceBox.value           = aURLValues[3];
		if(ToolForm.GenderBox.value        != aURLValues[4])
			ToolForm.GenderBox.value         = aURLValues[4];
		if(ToolForm.IncdMortBox.value      != aURLValues[5])
			ToolForm.IncdMortBox.value       = aURLValues[5];
		if(ToolForm.YearBox.value          != aURLValues[6])
			ToolForm.YearBox.value           = aURLValues[6];
		if(ToolForm.IntervalTypeBox.value  != aURLValues[7])
			ToolForm.IntervalTypeBox.value   = aURLValues[7];
		if(ToolForm.NumIntervalsBox.value  != aURLValues[8])
			ToolForm.NumIntervalsBox.value   = aURLValues[8];
		if(ToolForm.ColorsBox.value        != aURLValues[9])
			ToolForm.ColorsBox.value         = aURLValues[9];
		}
}

function zoomIn() 
{
	ResetToolForm();
	var dx 				= oCurrExtent.width  * zoomFactor;
	var dy 				= oCurrExtent.height * zoomFactor;
	setXYCoords((oCurrExtent.minx + dx),(oCurrExtent.maxy - dy),
	            (oCurrExtent.maxx - dx),(oCurrExtent.miny + dy));
	submitZoomPanQueryString();
}

function zoomOut() 
{
	ResetToolForm();
	var dx 				= oCurrExtent.width  * zoomFactor;
	var dy 				= oCurrExtent.height * zoomFactor;
	setXYCoords((oCurrExtent.minx - dx),(oCurrExtent.maxy + dy),
	            (oCurrExtent.maxx + dx),(oCurrExtent.miny - dy));
	submitZoomPanQueryString();
}

function zoomFull() 
{
	ResetToolForm();
	clearXYCoords();
	submitZoomPanQueryString();
}

// PAN FUNCTIONS

function panMap(signx,signy) 
{
	ResetToolForm();
	var dx 				= oCurrExtent.width  * panFactor * signx;
	var dy 				= oCurrExtent.height * panFactor * signy;
	setXYCoords((oCurrExtent.minx + dx),(oCurrExtent.maxy + dy),
	            (oCurrExtent.maxx + dx),(oCurrExtent.miny + dy));
	submitZoomPanQueryString();
}
//
////Identify Tools
//function IdentifyClick(iMapX, iMapY)
//{
//	getIdentifyResults(iMapX-pixelX,iMapY-pixelY,iMapX+pixelX,iMapY+pixelY);
//	
//}

//This functions the same as submitQueryString except it is submitting the hidden form ToolForm 
// with the values pasted into the URL string 
function submitZoomPanQueryString() 
{	
	//alert("in submitQueryString");
   var formObj = document.ToolForm;
   var queryString = "";

	//All the values are hidden so they will be read directly
   var Race     = formObj.RaceBox.value;
   var Age      = formObj.AgeBox.value;
   var Sex      = formObj.GenderBox.value;
   var DataType = formObj.IncdMortBox.value;
   var Geo      = formObj.GeoAreaBox.value;
   var Cancer   = formObj.CancerBox.value;
   var Year     = formObj.YearBox.value;
   var IntType  = formObj.IntervalTypeBox.value;
   var NumInts  = formObj.NumIntervalsBox.value;
   var Colors   = formObj.ColorsBox.value;
	queryString  = Geo+"&"+Age+"&"+Cancer+"&"+Race+"&"+Sex+"&"+DataType+"&"+Year+"&"+IntType+"&"+NumInts+"&"+Colors;
	if(formObj.MinX.value != '' && formObj.MinY.value != '' &&
	   formObj.MaxX.value != '' && formObj.MaxY.value != '')
		{	
		var MinX = formObj.MinX.value;
		var MinY = formObj.MinY.value;
		var MaxX = formObj.MaxX.value;
		var MaxY = formObj.MaxY.value;
		queryString += "&"+MinX+"&"+MaxY+"&"+MaxX+"&"+MinY;
		}
	
	formObj.target='_self';
   formObj.action = "map.withimage.php?"+queryString+"#map";
  
	formObj.submit();
}

// Sets the geo value to the state fips passed in, clears the X & Y zoom coordinates and then calls submitZoomPanQueryString().
// This will bring up 
function DrillDownToState(stateFips) 
{	
   var formObj = document.ToolForm;
	formObj.GeoAreaBox.value = stateFips;
	//Check the year value on drill downs, do not want to drill down to single year, must change it to range
	if(formObj.YearBox.value != sCurrentRangeYear)
		{
		formObj.YearBox.value = sCurrentRangeYear;
		formObj.YearChanged.value = "True";
		}
	clearXYCoords();
	submitZoomPanQueryString();
}

//This functions has the same functionality as submitZoomPanQueryString 
// except it sets the geo value to the state fips passed in and then submits the query.
function ZoomToState() 
{	
	ResetToolForm();

	var ZoomForm 	 = document.ZoomBoxForm;
	var ZoomToState = ZoomForm.ZoomToStateBox;
	var index   	 = ZoomToState.selectedIndex;
	var sStateFips  = ZoomToState.options[index].value;
	var sCoordStr   = "";
	var aCoords;

	if(sStateFips == '**') //Nothing selected
		alert("Please select a State.");
	else if(sStateFips == '00' || sStateFips == '99')
		{
		clearXYCoords();
		submitZoomPanQueryString();
		}
	else
		{
		sCoordStr = ZoomCoordinates[sStateFips];
		aCoords   = sCoordStr.split(";");
		setXYCoords(aCoords[0],aCoords[1],aCoords[2],aCoords[3]);
		submitZoomPanQueryString();
		}
}

function SwitchService()
{
	ResetToolForm();

	var ToolForm		 = document.ToolForm;
	var ToolGeoAreaBox = ToolForm.GeoAreaBox;
	var ZoomForm 	 	 = document.ZoomBoxForm;
	var ZoomToState 	 = ZoomForm.ZoomToStateBox;
	var index   	 	 = ZoomToState.selectedIndex;
	var sStateFips  	 = ZoomToState.options[index].value;


	if(sStateFips == '**') //Nothing selected
		alert("Please select a State.");
	else 
		{
		ToolGeoAreaBox.value = sStateFips;
		clearXYCoords();
		submitZoomPanQueryString();
		}
}
	

//This functions calls the printable image function
//This assume the parameters in the link match the values in the Hidden Form ToolForm
function PrintableImage() 
{	
   var formObj = document.ToolForm;
	
   var queryString = "";
	//All the values are hidden so they will be read directly
   var Race     = formObj.RaceBox.value;
   var Age      = formObj.AgeBox.value;
   var Sex      = formObj.GenderBox.value;
   var DataType = formObj.IncdMortBox.value;
   var Geo      = formObj.GeoAreaBox.value;
   var Cancer   = formObj.CancerBox.value;
   var Year     = formObj.YearBox.value;
   var IntType  = formObj.IntervalTypeBox.value;
   var NumInts  = formObj.NumIntervalsBox.value;
   var Colors   = formObj.ColorsBox.value;
	queryString  = Geo+"&"+Age+"&"+Cancer+"&"+Race+"&"+Sex+"&"+DataType+"&"+Year+"&"+IntType+"&"+NumInts+"&"+Colors;

	var popup = window.open("printable.map.php",'PrintView','width=780,height=600,left=1,top=1,toolbar=no,scrollbars=yes,status=1,menubar=1,resizable=1');

   popup.focus();
	formObj.target='PrintView';
   formObj.action = "printable.map.php?"+queryString;
  
	formObj.submit();
}


