// sjcTOOLS.js
// handle tool button clicks, various map button functions
// Copyright (C) 2005 San Joaquin County Community Development Geographic Information Systems, ALL RIGHTS RESERVED
// initial creation: 01/14/2004 David Bollinger
//


function pressTool(toolName) {
	switch(toolName) {
		case "zoomin":
			activeTool = toolName;
			mouse.mode = '';
			setCursorURL("theTop", "zoomin", "crosshair");
			break;
		case "zoomout":
			activeTool = toolName;
			mouse.mode = '';
			setCursorURL("theTop", "zoomout", "crosshair");
			break;
		case "zoomfull":
			doZoomFull();
			break;
		case "pan":
			activeTool = toolName;
			mouse.mode = '';
			setCursorURL("theTop", "pan", "move");
			break;
		case "clear":
			select.clear();
			map.request();
			break;
		case "print":
			displayPrintForm();
			break;
		case "select": /* aka identify */
			mouse.mode = '';
			activeTool = "identify";
			setCursorURL("theTop", "identify", "help");
			break;
		case "toggleov":
			toggleOVMap();
			break;	
	}
}

function calcScaleFactor() {
	var xDistance = extent.width;
	var yDistance = extent.height;
  var aspectRatio = iWidth / iHeight;
  var extentRatio = xDistance / yDistance;
  mapScaleFactor = (extentRatio < aspectRatio) ? (yDistance / iHeight) : (xDistance / iWidth);
	// UPDATE SCALE DISPLAY
	var screenDPI = 96; 
	var inchesPerFoot = 12; 
	parent.ScaleFrame.update( parseInt(mapScaleFactor * screenDPI * inchesPerFoot) ); 
}

function saveLastExtent() {
	lastextent.setfrom(extent);
}

function doZoomFull() {
	moveLayer("theMap",0,0);
	window.scrollTo(0,0);
	saveLastExtent();
	extent.setfrom(fullextent);
	limitExtent();
	map.request();
}

function zoomBack() {
	moveLayer("theMap",0,0);
	var temp = extent;
	extent = lastextent;
	lastextent = temp;
	limitExtent();
	map.request();
}

function doZoomEnvelope(minx,miny,maxx,maxy) {
	moveLayer("theMap",0,0);
	saveLastExtent();
	extent.set(minx,miny,maxx,maxy);
	limitExtent();
	map.request();
}

function doZoomInPoint() {
	saveLastExtent();
	getMapXY(mouse.x,mouse.y);
	var zoomFactor = 60/100;
	var dx = extent.width/2*zoomFactor;
	var dy = extent.height/2*zoomFactor;
	extent.set(mapX-dx, mapY-dy, mapX+dx, mapY+dy);
	limitExtent();
	map.request();
}

function doZoomOutPoint() {
	saveLastExtent();
	getMapXY(mouse.x,mouse.y);
	var zoomFactor = 100/60;
	var dx = extent.width/2*zoomFactor;
	var dy = extent.height/2*zoomFactor;
	extent.set(mapX-dx, mapY-dy, mapX+dx, mapY+dy);
	limitExtent();
	map.request();
}	

function limitExtent() {
	if (extent.minx < fullextent.minx) extent.minx = fullextent.minx;
	if (extent.miny < fullextent.miny) extent.miny = fullextent.miny;
	if (extent.maxx > fullextent.maxx) extent.maxx = fullextent.maxx;
	if (extent.maxy > fullextent.maxy) extent.maxy = fullextent.maxy;
}


