// ecwMap.js
/*
*  JavaScript template file for ArcIMS HTML Viewer to add ECW map layers
*	NOTE:
*	-	Add this as an include to MapFrame.htm
*	-	This include *must* be after all aims includes
*/

var ecwMapCurrent;

// send the ECW image layer request to Image Web Server
function ecwMap() {
	// ArcIMS centers aspect, so adjust extents to take this into account
	var dImage  = Math.abs(eRight-eLeft)/Math.abs(eBottom-eTop);
	var dAspect = iWidth/iHeight;
	var xLeft = eLeft, xRight = eRight, yTop = eTop, yBottom = eBottom;
	if( dAspect <= dImage ) {
		var yCenter = yTop + (yBottom-yTop)/2;
		var yDelta  = (yBottom-yTop)*(dImage/dAspect)*0.5;
		yTop 	  = yCenter - yDelta;
		yBottom = yCenter + yDelta;
	}
	else {
		var xCenter = xLeft + (xRight-xLeft)/2;
		var xDelta  = (xRight-xLeft)*(dAspect/dImage)*0.5;
		xLeft	  = xCenter - xDelta;
		xRight  = xCenter + xDelta;
	}

	var 	srcUrl ;//= "http://" + ecwServer + "/ecwp/ecw_img.dll?image?ecw=" + ecwImage1;
	var 	srcSize= "&sizex=" + iWidth + "&sizey=" + iHeight;
	var	srcArea= "&worldtlx=" + xLeft + "&worldtly=" + yTop + "&worldbrx=" + xRight + "&worldbry=" + yBottom;
	var	srcFill= "&fill=#FF0000";

		srcUrl = "http://" + ecwServer + "/ecwp/ecw_img.dll?image?ecw=" + arEcwImage[iEcwLayerCurrent]
		document.ecwImageForm.src = srcUrl + srcSize + srcArea + srcFill;

	// alert(srcUrl + "\n" + srcSize + "\n" + srcArea);

}

// reposition map image after a pan
function resetPanEcw(ecwMapName){
	moveLayer(ecwMapName,hspc,vspc);
	clipLayer2(ecwMapName,0,0,iWidth,iHeight);
}

// overwrite functions in aims files with new ones that keep layers in synch

// replace aimsXML.js functions
function sendMapXML()
{
	if (iEcwLayerCurrent > 0)
	{
		ecwMap();
	}
		beforeMapRefresh();
		showRetrieveMap();
		var theText = writeXML();
		sendToServer(imsURL,theText,1);
	
}

// reposition map image after a pan
var resetPanOnly = false;

function resetPanImage(){
	if (toolMode==3) {
		resetPanOnly = true;
		moveLayer("theMap",hspc,vspc);
		clipLayer2("theMap",0,0,iWidth,iHeight);
		resetPanOnly = false;
		window.setTimeout('showLayer("theMap");',1000);
		if (hasLayer("theMapClicks")) {
			moveLayer("theMapClicks",hspc,vspc);
			clipLayer2("theMapClicks",0,0,iWidth,iHeight);
	
		}
	}
	document.theImage.onload = null;
}


// replace aimsDHTML.js functions
function moveLayer(name, x, y) {
	if( !resetPanOnly && name=="theMap" )
		moveLayer(ecwMapCurrent,x,y);
 	var layer = getLayer(name);		
    	layer.left = x + "px";
   	layer.top  = y + "px";
}

function clipLayer2(name, clipleft, cliptop, clipright, clipbottom) {
	if( !resetPanOnly && name=="theMap" )
		clipLayer2(ecwMapCurrent,clipleft, cliptop, clipright, clipbottom);
	  var layer = getLayer(name);		
	  layer.clip = 'rect(' + cliptop + ' ' +  clipright + ' ' + clipbottom + ' ' + clipleft +')';
}

function clipLayer(name, clipleft, cliptop, clipright, clipbottom) {
	if( !resetPanOnly && name=="theMap" )
		clipLayer(ecwMapCurrent,clipleft, cliptop, clipright, clipbottom);
	  var layer = getLayer(name);
	  var newWidth = clipright - clipleft;
		var newHeight = clipbottom - cliptop;
		layer.height = newHeight;
		layer.width	= newWidth;
		layer.top	= cliptop  + "px";
		layer.left	= clipleft + "px";
}


