﻿// display_coordinates.js

var m_currentCoordinatesToolbarTool = "point";
var m_CoordinatesToolbarImagePath = "images/";
var m_CoordinatesToolbarImageExtension = ".gif";
var m_CoordinatesDisplay = "CoordinatesDisplay";
//var m_CoordinatesToolbarId = "CoordinatesToolbar";
var m_CoordinatesLengthsTotal = 0.0;
var m_CoordinatesAreasTotal = 0.0;
var m_CoordinatesTypes = new Array();
m_CoordinatesTypes[0] = "point";
//m_CoordinatesTypes[1] = "polyline";
//m_CoordinatesTypes[2] = "polygon";
var m_CoordinatesMoveFunction = null;
var m_CoordinatesCoords = "";
var m_CoordinatesLastCoords = "";
var m_CoordinatesMouseUpSet = false;

//var m_CoordinatesToolbar = null;
var m_CoordinatesGraphicFeature = null;

function checkCoordinatesToolbarBorder(cell, type) {
    if (type.toLowerCase()==m_currentCoordinatesToolbarTool)
        cell.style.borderColor = "Black";
    else
        cell.style.borderColor = "White";  
}

// set current Coordinates tool
function setCoordinatesToolbarTool(type) {
	m_currentCoordinatesToolbarTool = type.toLowerCase();
	var cellObj;
	var buttonId = "";
	for (var i=0; i<m_CoordinatesTypes.length; i++) {
		buttonId = "CoordinatesToolbarButton_" + m_CoordinatesTypes[i];
		cellObj = document.getElementById(buttonId);
		if (cellObj!=null) {
			if (m_CoordinatesTypes[i]==m_currentCoordinatesToolbarTool) {
				cellObj.style.borderColor = "Black";
				cellObj.style.backgroundColor = "#EEEEEE";
				startCoordinates();
			}
			else {
				cellObj.style.borderColor = "White";
				cellObj.style.backgroundColor = "White";
			}
		}
	}
}



// Point Coordinates action ... for location coordinates
function CoordinatesPoint(map) {
	if (map!=null) {
		map.getGeometry(ESRI.ADF.Graphics.ShapeType.Point,MapCoordsClick,null,'black',null,'pointer', true);        
	}    
}

// Handler for CoordinatesPoint clicks
function MapCoordsClick(geom, evtArgs) {
    if (map== null) map = $find("Map1");
	var geomString = '';
	var type = '';
    removeCoordinatesGraphic();
    var style = null; 
	if(ESRI.ADF.Geometries.Point.isInstanceOfType(geom)) {
		geomString = geom.toString(':');
		type = 'point';
		style = new ESRI.ADF.Graphics.MarkerSymbol("images/crosshair.png",6,6);
	}
	else if(ESRI.ADF.Geometries.Polyline.isInstanceOfType(geom)) {
		geomString = geom.getPath(0).toString('|',':');
		type = 'polyline';
		style = new ESRI.ADF.Graphics.LineSymbol("black",2);
	}
	else if(ESRI.ADF.Geometries.Polygon.isInstanceOfType(geom)) {
		geomString = geom.getRing(0).toString('|',':');
		type = 'polygon';
		style = new ESRI.ADF.Graphics.FillSymbol("black","black",2);	
		style.set_opacity(0.2);	
	}
	m_CoordinatesGraphicFeature = $create(ESRI.ADF.Graphics.GraphicFeature,
		        {"id": "CoordinatesPointIcon","geometry":geom,"symbol":style});
	map.addGraphic(m_CoordinatesGraphicFeature);        
	coordString = geomString;
	  	
	m_CoordinatesLastCoords = m_CoordinatesCoords;
	m_CoordinatesCoords = "";
	var argument = 'ControldID='+map.get_id()+'&EventArg='+type+'&coords='+geomString+'&VectorMode=measure';	
    if (checkForFormElement(document, 0, "CoordinatesUnits")) argument += "&CoordinatesUnits=" + document.forms[0].CoordinatesUnits.value;
    if (checkForFormElement(document, 0, "AreaUnits")) argument += "&AreaUnits=" + document.forms[0].AreaUnits.value;
    if (checkForFormElement(document, 0, "MapUnits")) argument += "&MapUnits=" + document.forms[0].MapUnits.options[document.forms[0].MapUnits.selectedIndex].value;

	var context = this;
	eval(CoordinatesVectorCallbackFunctionString);
}

function CoordinatesCoordsMouseUp(sender, args) {
    
    //m_CoordinatesToolbar = $get(m_CoordinatesToolbarId);
    //if (m_CoordinatesToolbar!=null) {
     //   m_CoordinatesToolbar.style.display = "";
   // }
    if (m_currentCoordinatesToolbarTool!="point") {
        var coords = args.coordinate;
        if (coords!=null && !isNaN(coords.get_x()) && !isNaN(coords.get_y())) {
            // ignore null or non-numeric input
            if (m_CoordinatesCoords.length>0) {
                if (args.button==Sys.UI.MouseButton.rightButton) {
                    var pos = m_CoordinatesCoords.lastIndexOf("|");
                    m_CoordinatesCoords =  m_CoordinatesCoords.substring(0,pos);
                } else if (args.button==Sys.UI.MouseButton.leftButton){  
                    m_CoordinatesCoords += (m_CoordinatesCoords.length>0 ? "|" : "") + coords.get_x() + ":" + coords.get_y();
                } else 
                    return;
	            var argument = 'ControldID='+map.get_id()+'&EventArg='+m_currentCoordinatesToolbarTool+'&coords='+m_CoordinatesCoords+'&VectorMode=measure';	
                if (checkForFormElement(document, 0, "CoordinatesUnits")) argument += "&CoordinatesUnits=" + document.forms[0].CoordinatesUnits.value;
                if (checkForFormElement(document, 0, "AreaUnits")) argument += "&AreaUnits=" + document.forms[0].AreaUnits.value;
                if (checkForFormElement(document, 0, "MapUnits")) argument += "&MapUnits=" + document.forms[0].MapUnits.options[document.forms[0].MapUnits.selectedIndex].value;

	            var context = this;
	            eval(CoordinatesVectorCallbackFunctionString);
	        } else {
                removeCoordinatesGraphic();
                if (args.button==Sys.UI.MouseButton.rightButton)
                    m_CoordinatesCoords = "";
                else if (args.button==Sys.UI.MouseButton.leftButton)
	                m_CoordinatesCoords = coords.get_x() + ":" + coords.get_y(); 
	        }
	        m_CoordinatesLastCoords = m_CoordinatesCoords;
//	    } else {
//	        window.status = "no coords";
	    }
	}
}

function removeCoordinatesGraphic() {
    
    if (m_CoordinatesGraphicFeature!=null) {
        map.removeGraphic(m_CoordinatesGraphicFeature);
        m_CoordinatesGraphicFeature.dispose();
        m_CoordinatesGraphicFeature = null;
    }

}


function startCoordinates() {
    
    var md;
    if (map== null) map = $find("Map1");
    if (m_CoordinatesDisplay != null) {
        md = $get(m_CoordinatesDisplay);
    }
    if (m_currentCoordinatesToolbarTool == "point") {
        if (md != null) md.innerHTML = "Click on the map to return the coordinate location of the point.<br />";
        CoordinatesPoint(map);
    }
    if (!m_CoordinatesMouseUpSet) {
        map.add_mouseUp(CoordinatesCoordsMouseUp);
        m_CoordinatesMouseUpSet = true;
    }
}


function CoordinatesComplete(result,id,area,perimeter,segment, totaldistance) {
	var md = $get(m_CoordinatesDisplay);
	if(result) {
		md.innerHTML = result;
	}
	else {
		//just replace values
		var tdperimeter = $get("tdperimiter");
		var tdarea = $get("tdarea");
		var tdsegment = $get("tdsegment");
		var tdtotaldistance = $get("tdtotaldistance");
		
		if(tdarea) { tdarea.innerHTML = area; }
		if(tdperimeter) { tdperimeter.innerHTML = perimeter; }
		if(tdsegment && segment) { tdsegment.innerHTML = segment; }
		if(tdtotaldistance && totaldistance) { tdtotaldistance.innerHTML = totaldistance; }
	}
}
function closeCoordinatesToolbarTool(id) {
    
    hideCoordinatesToolbarTool(id);
    map.cancelGetGeometry();
    map.remove_mouseUp(CoordinatesCoordsMouseUp); 
    m_CoordinatesMouseUpSet = false; 
 }

function hideCoordinatesToolbarTool(id) {
    //m_CoordinatesToolbar = $get(m_CoordinatesToolbarId);
    //if (m_CoordinatesToolbar!=null) {
      //  m_CoordinatesToolbar.style.display = "none";
        removeCoordinatesGraphic();

    //}

    //hide parent
    //toggleCoordinates();
} 

// update distance unit settings... request new totals from server
function changeCoordinatesUnits() {
    
    var f = document.forms[docFormID];
    var i = f.CoordinatesUnits2.selectedIndex;
    var m = f.CoordinatesUnits2.options[i].value;
    f.CoordinatesUnits.value = m; 
    if (coordString==null) coordString="";
    var argument = "ControlID=" + map.get_id() + "&EventArg=" + m_currentCoordinatesToolbarTool + "&ControlType=Map&coords=" + m_CoordinatesLastCoords + "&VectorMode=measure&VectorAction=AddPoint&CoordinatesUnits=" + m + "&refresh=true";
   if (checkForFormElement(document, 0, "AreaUnits")) {
        argument += "&AreaUnits=" + f.AreaUnits.value ;
   } 
    var context = map.get_id() + "," + m_currentCoordinatesToolbarTool;

    eval(CoordinatesVectorCallbackFunctionString);    
}

// set up the images for transparency in IE6
function setIE6CoordinatesToolbarImages() {
    var imageId = "";
    var imgSrc = ""; 
//    var imgObj = document.images["CoordinatesToolbar_CloseButton"];
//    if (imgObj!=null) {
//        imgObj.src = "images/blank.gif";
//        imgObj.style.filter =  "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=/aspnet_client/ESRI/WebADF/images/dismiss.png)";
//    }
    for (var i=0; i<m_CoordinatesTypes.length; i++) {
	    imageId = "ToolbarImage_" + m_CoordinatesTypes[i];
	    var imgObj = document.images[imageId];
	    if (imgObj!=null) {
	        imgSrc = imgObj.src;
            imgObj.src = "images/blank.gif";
            imgObj.style.filter =  "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=" + imgSrc + ")";
	    }
    }
}

